Moved ECore specific indicator-impl out of common
[platform/core/uifw/dali-adaptor.git] / adaptors / common / accessibility-adaptor-impl.h
1 #ifndef __DALI_INTERNAL_ACCESSIBILITY_ADAPTOR_H__
2 #define __DALI_INTERNAL_ACCESSIBILITY_ADAPTOR_H__
3
4 /*
5  * Copyright (c) 2014 Samsung Electronics Co., Ltd.
6  *
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
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
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.
18  *
19  */
20
21 // EXTERNAL INCLUDES
22 #include <string>
23
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>
28
29 // INTERNAL INCLUDES
30 #include <accessibility-adaptor.h>
31 #include <accessibility-action-handler.h>
32 #include <accessibility-gesture-handler.h>
33 #include <indicator-interface.h>
34 #include <accessibility-gesture-detector.h>
35
36 namespace Dali
37 {
38
39 namespace Internal
40 {
41
42 namespace Adaptor
43 {
44
45 /**
46  * This class detects to accessibility action
47  */
48 class AccessibilityAdaptor : public Dali::BaseObject
49 {
50 public:
51
52   // Creation
53
54   /**
55    * Constructor.
56    */
57   AccessibilityAdaptor();
58
59   /**
60    * Get an instance of the AccessibilityAdaptor.
61    * @return The instance of the AccessibilityAdaptor.
62    */
63   static Dali::AccessibilityAdaptor Get();
64
65   // Public API
66
67   /**
68    * Turn on accessibility action
69    * This method should be called by vconf callback
70    */
71   void EnableAccessibility();
72
73   /**
74    * Turn off accessibility action
75    * This method should be called by vconf callback
76    */
77   void DisableAccessibility();
78
79   /**
80    * @copydoc Dali::AccessibilityAdaptor::IsEnabled()
81    */
82   bool IsEnabled() const;
83
84   /**
85    * @copydoc Dali::AccessibilityAdaptor::GetReadPosition() const
86    */
87   Vector2 GetReadPosition() const;
88
89   /**
90    * @copydoc Dali::AccessibilityAdaptor::SetActionHandler()
91    */
92   void SetActionHandler(AccessibilityActionHandler& handler);
93
94   /**
95    * @copydoc Dali::AccessibilityAdaptor::SetGestureHandler()
96    */
97   void SetGestureHandler(AccessibilityGestureHandler& handler);
98
99   /**
100    * @brief Set the Indicator
101    * @param[in] Indiciator interface
102    */
103   void SetIndicator( IndicatorInterface* indicator );
104
105   /**
106    * @copydoc Dali::AccessibilityAdaptor::HandleActionNextEvent()
107    */
108   bool HandleActionNextEvent(bool allowEndFeedback = true);
109
110   /**
111    * @copydoc Dali::AccessibilityAdaptor::HandleActionPreviousEvent()
112    */
113   bool HandleActionPreviousEvent(bool allowEndFeedback = true);
114
115   /**
116    * @copydoc Dali::AccessibilityAdaptor::HandleActionActivateEvent()
117    */
118   bool HandleActionActivateEvent();
119
120   /**
121    * @copydoc Dali::AccessibilityAdaptor::HandleActionReadEvent()
122    */
123   bool HandleActionReadEvent(unsigned int x, unsigned int y, bool allowReadAgain);
124
125   /**
126    * @copydoc Dali::AccessibilityAdaptor::HandleActionReadNextEvent()
127    */
128   bool HandleActionReadNextEvent(bool allowEndFeedback = true);
129
130   /**
131    * @copydoc Dali::AccessibilityAdaptor::HandleActionReadPreviousEvent()
132    */
133   bool HandleActionReadPreviousEvent(bool allowEndFeedback = true);
134
135   /**
136    * @copydoc Dali::AccessibilityAdaptor::HandleActionUpEvent()
137    */
138   bool HandleActionUpEvent();
139
140   /**
141    * @copydoc Dali::AccessibilityAdaptor::HandleActionDownEvent()
142    */
143   bool HandleActionDownEvent();
144
145   /**
146    * @copydoc Dali::AccessibilityAdaptor::HandleActionClearFocusEvent()
147    */
148   bool HandleActionClearFocusEvent();
149
150   /**
151    * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollEvent()
152    */
153   bool HandleActionScrollEvent(const TouchPoint& point, unsigned long timeStamp);
154
155   /**
156    * @copydoc Dali::AccessibilityAdaptor::HandleActionTouchEvent()
157    */
158   bool HandleActionTouchEvent(const TouchPoint& point, unsigned long timeStamp);
159
160   /**
161    * @copydoc Dali::AccessibilityAdaptor::HandleActionBackEvent()
162    */
163   bool HandleActionBackEvent();
164
165   /**
166    * @copydoc Dali::AccessibilityAdaptor::HandleActionEnableEvent()
167    */
168   void HandleActionEnableEvent();
169
170   /**
171    * @copydoc Dali::AccessibilityAdaptor::HandleActionDisableEvent()
172    */
173   void HandleActionDisableEvent();
174
175   /**
176    * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollUpEvent()
177    */
178   bool HandleActionScrollUpEvent();
179
180   /**
181    * @copydoc Dali::AccessibilityAdaptor::HandleActionScrollDownEvent()
182    */
183   bool HandleActionScrollDownEvent();
184
185   /**
186    * @copydoc Dali::AccessibilityAdaptor::HandleActionPageLeftEvent()
187    */
188   bool HandleActionPageLeftEvent();
189
190   /**
191    * @copydoc Dali::AccessibilityAdaptor::HandleActionPageRightEvent()
192    */
193   bool HandleActionPageRightEvent();
194
195   /**
196    * @copydoc Dali::AccessibilityAdaptor::HandleActionPageUpEvent()
197    */
198   bool HandleActionPageUpEvent();
199
200   /**
201    * @copydoc Dali::AccessibilityAdaptor::HandleActionPageDownEvent()
202    */
203   bool HandleActionPageDownEvent();
204
205   /**
206    * @copydoc Dali::AccessibilityAdaptor::HandleActionMoveToFirstEvent()
207    */
208   bool HandleActionMoveToFirstEvent();
209
210   /**
211    * @copydoc Dali::AccessibilityAdaptor::HandleActionMoveToLastEvent()
212    */
213   bool HandleActionMoveToLastEvent();
214
215   /**
216    * @copydoc Dali::AccessibilityAdaptor::HandleActionReadFromTopEvent()
217    */
218   bool HandleActionReadFromTopEvent();
219
220   /**
221    * @copydoc Dali::AccessibilityAdaptor::HandleActionReadFromNextEvent()
222    */
223   bool HandleActionReadFromNextEvent();
224
225   /**
226    * @copydoc Dali::AccessibilityAdaptor::HandleActionZoomEvent()
227    */
228   bool HandleActionZoomEvent();
229
230   /**
231    * @copydoc Dali::AccessibilityAdaptor::HandleActionReadIndicatorInformationEvent()
232    */
233   bool HandleActionReadIndicatorInformationEvent();
234
235   /**
236    * @copydoc Dali::AccessibilityAdaptor::HandleActionReadPauseResumeEvent()
237    */
238   bool HandleActionReadPauseResumeEvent();
239
240   /**
241    * @copydoc Dali::AccessibilityAdaptor::HandleActionStartStopEvent()
242    */
243   bool HandleActionStartStopEvent();
244
245 private:
246
247   // Destruction
248
249   /**
250    * Destructor.
251    */
252   virtual ~AccessibilityAdaptor();
253
254   // Undefined
255   AccessibilityAdaptor( const AccessibilityAdaptor& );
256   AccessibilityAdaptor& operator=( AccessibilityAdaptor& );
257
258 private:
259
260   Dali::Integration::TouchEventCombiner mCombiner; ///< Combines multi-touch events.
261
262   bool mIsEnabled; ///< enable/disable the accessibility action
263   Vector2 mReadPosition; ///< ActionRead position
264
265   AccessibilityActionHandler* mActionHandler; ///< The pointer of accessibility action handler
266
267   AccessibilityGestureDetectorPtr mAccessibilityGestureDetector; ///< The accessibility gesture detector
268
269   IndicatorInterface* mIndicator; ///< The indicator
270   bool mIndicatorFocused; ///< Whether the Indicator is focused
271
272 public:
273
274   // Helpers for public-api forwarding methods
275
276   inline static Internal::Adaptor::AccessibilityAdaptor& GetImplementation(Dali::AccessibilityAdaptor& adaptor)
277   {
278     DALI_ASSERT_ALWAYS( adaptor && "AccessibilityAdaptor handle is empty" );
279
280     BaseObject& handle = adaptor.GetBaseObject();
281
282     return static_cast<Internal::Adaptor::AccessibilityAdaptor&>(handle);
283   }
284
285   inline static const Internal::Adaptor::AccessibilityAdaptor& GetImplementation(const Dali::AccessibilityAdaptor& adaptor)
286   {
287     DALI_ASSERT_ALWAYS( adaptor && "AccessibilityAdaptor handle is empty" );
288
289     const BaseObject& handle = adaptor.GetBaseObject();
290
291     return static_cast<const Internal::Adaptor::AccessibilityAdaptor&>(handle);
292   }
293
294 };
295
296 } // namespace Adaptor
297
298 } // namespace Internal
299
300 } // namespace Dali
301
302 #endif // __DALI_INTERNAL_ACCESSIBILITY_ADAPTOR_H__