23da644d77fe03e8624f9a19a7293f68f4682a93
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / accessibility-manager / accessibility-manager-impl.h
1 #ifndef __DALI_TOOLKIT_INTERNAL_ACCESSIBILITY_MANAGER_H__
2 #define __DALI_TOOLKIT_INTERNAL_ACCESSIBILITY_MANAGER_H__
3
4 /*
5  * Copyright (c) 2016 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 #include <dali/devel-api/common/map-wrapper.h>
24 #include <dali/devel-api/adaptor-framework/accessibility-action-handler.h>
25 #include <dali/devel-api/adaptor-framework/accessibility-gesture-handler.h>
26 #include <dali/public-api/object/base-object.h>
27 #include <dali/integration-api/events/pan-gesture-event.h>
28
29 // INTERNAL INCLUDES
30 #include <dali-toolkit/public-api/accessibility-manager/accessibility-manager.h>
31 #include <dali/public-api/adaptor-framework/tts-player.h>
32
33 namespace Dali
34 {
35
36 namespace Toolkit
37 {
38
39 namespace Internal
40 {
41
42 class AccessibilityManager;
43
44 /**
45  * @copydoc Toolkit::AccessibilityManager
46  */
47 class AccessibilityManager : public Dali::BaseObject, Dali::AccessibilityActionHandler, Dali::AccessibilityGestureHandler, public Dali::ConnectionTracker
48 {
49 public:
50
51   typedef Dali::Toolkit::AccessibilityManager::AccessibilityActionSignalType       AccessibilityActionSignalType;
52   typedef Dali::Toolkit::AccessibilityManager::AccessibilityActionScrollSignalType AccessibilityActionScrollSignalType;
53
54   struct ActorAdditionalInfo
55   {
56     ActorAdditionalInfo()
57     : mFocusOrder(0)
58     {
59     }
60
61     unsigned int mFocusOrder; ///< The focus order of the actor. It is undefined by default.
62
63     std::string mAccessibilityAttributes[Toolkit::AccessibilityManager::ACCESSIBILITY_ATTRIBUTE_NUM]; ///< The array of attribute texts
64   };
65
66   typedef std::pair<unsigned int, unsigned int>        FocusIDPair;
67   typedef std::map<unsigned int, unsigned int>         FocusIDContainer;
68   typedef FocusIDContainer::iterator                   FocusIDIter;
69   typedef FocusIDContainer::const_iterator             FocusIDConstIter;
70
71   typedef std::pair<unsigned int, ActorAdditionalInfo> IDAdditionalInfoPair;
72   typedef std::map<unsigned int, ActorAdditionalInfo>  IDAdditionalInfoContainer;
73   typedef IDAdditionalInfoContainer::iterator          IDAdditionalInfoIter;
74   typedef IDAdditionalInfoContainer::const_iterator    IDAdditionalInfoConstIter;
75
76   /**
77    * Construct a new AccessibilityManager.
78    */
79   AccessibilityManager();
80
81   /**
82    * Initialise the AccessibilityManager
83    */
84   void Initialise();
85
86   /**
87    * @copydoc Toolkit::AccessibilityManager::SetAccessibilityAttribute
88    */
89   void SetAccessibilityAttribute(Actor actor, Toolkit::AccessibilityManager::AccessibilityAttribute type, const std::string& text);
90
91   /**
92    * @copydoc Toolkit::AccessibilityManager::GetAccessibilityAttribute
93    */
94   std::string GetAccessibilityAttribute(Actor actor, Toolkit::AccessibilityManager::AccessibilityAttribute type) const;
95
96   /**
97    * @copydoc Toolkit::AccessibilityManager::SetFocusOrder
98    */
99   void SetFocusOrder(Actor actor, const unsigned int order);
100
101   /**
102    * @copydoc Toolkit::AccessibilityManager::GetFocusOrder
103    */
104   unsigned int GetFocusOrder(Actor actor) const;
105
106   /**
107    * @copydoc Toolkit::AccessibilityManager::GenerateNewFocusOrder
108    */
109   unsigned int GenerateNewFocusOrder() const;
110
111   /**
112    * @copydoc Toolkit::AccessibilityManager::GetActorByFocusOrder
113    */
114   Actor GetActorByFocusOrder(const unsigned int order);
115
116   /**
117    * @copydoc Toolkit::AccessibilityManager::SetCurrentFocusActor
118    */
119   bool SetCurrentFocusActor(Actor actor);
120
121   /**
122    * @copydoc Toolkit::AccessibilityManager::GetCurrentFocusActor
123    */
124   Actor GetCurrentFocusActor();
125
126   /**
127    * @copydoc Toolkit::AccessibilityManager::GetCurrentFocusGroup
128    */
129   Actor GetCurrentFocusGroup();
130
131   /**
132    * @copydoc Toolkit::AccessibilityManager::GetCurrentFocusOrder
133    */
134   unsigned int GetCurrentFocusOrder();
135
136   /**
137    * @copydoc Toolkit::AccessibilityManager::MoveFocusForward
138    */
139   bool MoveFocusForward();
140
141   /**
142    * @copydoc Toolkit::AccessibilityManager::MoveFocusBackward
143    */
144   bool MoveFocusBackward();
145
146   /**
147    * @copydoc Toolkit::AccessibilityManager::ClearFocus
148    */
149   void ClearFocus();
150
151   /**
152    * @copydoc Toolkit::AccessibilityManager::Reset
153    */
154   void Reset();
155
156   /**
157    * @copydoc Toolkit::AccessibilityManager::SetFocusGroup
158    */
159   void SetFocusGroup(Actor actor, bool isFocusGroup);
160
161   /**
162    * @copydoc Toolkit::AccessibilityManager::IsFocusGroup
163    */
164   bool IsFocusGroup(Actor actor) const;
165
166   /**
167    * @copydoc Toolkit::AccessibilityManager::SetGroupMode
168    */
169   void SetGroupMode(bool enabled);
170
171   /**
172    * @copydoc Toolkit::AccessibilityManager::GetGroupMode
173    */
174   bool GetGroupMode() const;
175
176   /**
177    * @copydoc Toolkit::AccessibilityManager::SetWrapMode
178    */
179   void SetWrapMode(bool wrapped);
180
181   /**
182    * @copydoc Toolkit::AccessibilityManager::GetWrapMode
183    */
184   bool GetWrapMode() const;
185
186   /**
187    * @copydoc Toolkit::AccessibilityManager::SetFocusIndicatorActor
188    */
189   void SetFocusIndicatorActor(Actor indicator);
190
191   /**
192    * @copydoc Toolkit::AccessibilityManager::GetFocusIndicatorActor
193    */
194   Actor GetFocusIndicatorActor();
195
196   /**
197    * @copydoc Toolkit::AccessibilityManager::GetFocusGroup
198    */
199   Actor GetFocusGroup(Actor actor);
200
201   /**
202    * @copydoc Toolkit::AccessibilityManager::GetReadPosition
203    */
204   Vector2 GetReadPosition() const;
205
206 public:
207
208   /**
209    * @copydoc Toolkit::AccessibilityManager::FocusChangedSignal()
210    */
211   Toolkit::AccessibilityManager::FocusChangedSignalType& FocusChangedSignal();
212
213   /**
214    * @copydoc Toolkit::AccessibilityManager::FocusOvershotSignal()
215    */
216   Toolkit::AccessibilityManager::FocusOvershotSignalType& FocusOvershotSignal();
217
218   /**
219    * @copydoc Toolkit::AccessibilityManager::FocusedActorActivatedSignal()
220    */
221   Toolkit::AccessibilityManager::FocusedActorActivatedSignalType& FocusedActorActivatedSignal();
222
223 public:  // Signals
224
225   /**
226    * @copydoc Dali::Toolkit::AccessibilityManager::StatusChangedSignal
227    */
228   AccessibilityActionSignalType& StatusChangedSignal()
229   {
230     return mStatusChangedSignal;
231   }
232
233   /**
234    * @copydoc Dali::Toolkit::AccessibilityManager::AccessibilityAdaptor::ActionNextSignal
235    */
236   AccessibilityActionSignalType& ActionNextSignal()
237   {
238     return mActionNextSignal;
239   }
240
241   /**
242    * @copydoc Dali::Toolkit::AccessibilityManager::ActionPreviousSignal
243    */
244   AccessibilityActionSignalType& ActionPreviousSignal()
245   {
246     return mActionPreviousSignal;
247   }
248
249   /**
250    * @copydoc Dali::Toolkit::AccessibilityManager::ActionActivateSignal
251    */
252   AccessibilityActionSignalType& ActionActivateSignal()
253   {
254     return mActionActivateSignal;
255   }
256
257   /**
258    * @copydoc Dali::Toolkit::AccessibilityManager::ActionOverSignal
259    */
260   AccessibilityActionSignalType& ActionOverSignal()
261   {
262     return mActionOverSignal;
263   }
264
265   /**
266    * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadSignal
267    */
268   AccessibilityActionSignalType& ActionReadSignal()
269   {
270     return mActionReadSignal;
271   }
272
273   /**
274    * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadNextSignal
275    */
276   AccessibilityActionSignalType& ActionReadNextSignal()
277   {
278     return mActionReadNextSignal;
279   }
280
281   /**
282    * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadPreviousSignal
283    */
284   AccessibilityActionSignalType& ActionReadPreviousSignal()
285   {
286     return mActionReadPreviousSignal;
287   }
288
289   /**
290    * @copydoc Dali::Toolkit::AccessibilityManager::ActionUpSignal
291    */
292   AccessibilityActionSignalType& ActionUpSignal()
293   {
294     return mActionUpSignal;
295   }
296
297   /**
298    * @copydoc Dali::Toolkit::AccessibilityManager::ActionDownSignal
299    */
300   AccessibilityActionSignalType& ActionDownSignal()
301   {
302     return mActionDownSignal;
303   }
304
305   /**
306    * @copydoc Dali::Toolkit::AccessibilityManager::ActionClearFocusSignal
307    */
308   AccessibilityActionSignalType& ActionClearFocusSignal()
309   {
310     return mActionClearFocusSignal;
311   }
312
313   /**
314    * @copydoc Dali::Toolkit::AccessibilityManager::ActionBackSignal
315    */
316   AccessibilityActionSignalType& ActionBackSignal()
317   {
318     return mActionBackSignal;
319   }
320
321   /**
322    * @copydoc Dali::Toolkit::AccessibilityManager::ActionScrollUpSignal
323    */
324   AccessibilityActionSignalType& ActionScrollUpSignal()
325   {
326     return mActionScrollUpSignal;
327   }
328
329   /**
330    * @copydoc Dali::Toolkit::AccessibilityManager::ActionScrollDownSignal
331    */
332   AccessibilityActionSignalType& ActionScrollDownSignal()
333   {
334     return mActionScrollDownSignal;
335   }
336
337   /**
338    * @copydoc Dali::Toolkit::AccessibilityManager::ActionPageLeftSignal
339    */
340   AccessibilityActionSignalType& ActionPageLeftSignal()
341   {
342     return mActionPageLeftSignal;
343   }
344
345   /**
346    * @copydoc Dali::Toolkit::AccessibilityManager::ActionPageRightSignal
347    */
348   AccessibilityActionSignalType& ActionPageRightSignal()
349   {
350     return mActionPageRightSignal;
351   }
352
353   /**
354    * @copydoc Dali::Toolkit::AccessibilityManager::ActionPageUpSignal
355    */
356   AccessibilityActionSignalType& ActionPageUpSignal()
357   {
358     return mActionPageUpSignal;
359   }
360
361   /**
362    * @copydoc Dali::Toolkit::AccessibilityManager::ActionPageDownSignal
363    */
364   AccessibilityActionSignalType& ActionPageDownSignal()
365   {
366     return mActionPageDownSignal;
367   }
368
369   /**
370    * @copydoc Dali::Toolkit::AccessibilityManager::ActionMoveToFirstSignal
371    */
372   AccessibilityActionSignalType& ActionMoveToFirstSignal()
373   {
374     return mActionMoveToFirstSignal;
375   }
376
377   /**
378    * @copydoc Dali::Toolkit::AccessibilityManager::ActionMoveToLastSignal
379    */
380   AccessibilityActionSignalType& ActionMoveToLastSignal()
381   {
382     return mActionMoveToLastSignal;
383   }
384
385   /**
386    * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadFromTopSignal
387    */
388   AccessibilityActionSignalType& ActionReadFromTopSignal()
389   {
390     return mActionReadFromTopSignal;
391   }
392
393   /**
394    * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadFromNextSignal
395    */
396   AccessibilityActionSignalType& ActionReadFromNextSignal()
397   {
398     return mActionReadFromNextSignal;
399   }
400
401   /**
402    * @copydoc Dali::Toolkit::AccessibilityManager::ActionZoomSignal
403    */
404   AccessibilityActionSignalType& ActionZoomSignal()
405   {
406     return mActionZoomSignal;
407   }
408
409   /**
410    * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadIndicatorInformationSignal
411    */
412   AccessibilityActionSignalType& ActionReadIndicatorInformationSignal()
413   {
414     return mActionReadIndicatorInformationSignal;
415   }
416
417   /**
418    * @copydoc Dali::Toolkit::AccessibilityManager::ActionReadPauseResumeSignal
419    */
420   AccessibilityActionSignalType& ActionReadPauseResumeSignal()
421   {
422     return mActionReadPauseResumeSignal;
423   }
424
425   /**
426    * @copydoc Dali::Toolkit::AccessibilityManager::ActionStartStopSignal
427    */
428   AccessibilityActionSignalType& ActionStartStopSignal()
429   {
430     return mActionStartStopSignal;
431   }
432
433   /**
434    * @copydoc Dali::Toolkit::AccessibilityManager::ActionScrollSignal
435    */
436   AccessibilityActionScrollSignalType& ActionScrollSignal()
437   {
438     return mActionScrollSignal;
439   }
440
441 protected:
442
443   /**
444    * Destructor
445    */
446   virtual ~AccessibilityManager();
447
448 private:
449
450   /**
451    * Get the additional information (e.g. focus order and description) of the given actor.
452    * @param actorID The ID of the actor to be queried
453    * @return The additional information of the actor
454    */
455   ActorAdditionalInfo GetActorAdditionalInfo(const unsigned int actorID) const;
456
457   /**
458    * Synchronize the actor's additional information to reflect its latest focus order
459    * @param actorID The ID of the actor
460    * @param order The focus order of the actor
461    * @return The additional information of the actor
462    */
463   void SynchronizeActorAdditionalInfo(const unsigned int actorID, const unsigned int order);
464
465   /**
466    * Move the focus to the specified actor and send notification for the focus change.
467    * @param actorID The ID of the actor to be queried
468    * @return Whether the focus is successful or not
469    */
470   bool DoSetCurrentFocusActor(const unsigned int actorID);
471
472   /**
473    * Move the focus to the next actor in the focus chain towards the specified direction.
474    * @param focusIDIter The iterator pointing to the current focused actor
475    * @param forward Whether the focus movement is forward or not. The focus movement will be backward if this is false.
476    * @param wrapped Whether the focus shoule be moved wrapped around or not
477    * @return Whether the focus is successful or not
478    */
479   bool DoMoveFocus(FocusIDIter focusIDIter, bool forward, bool wrapped);
480
481   /**
482    * Activate the actor. If the actor is control, call OnAccessibilityActivated virtual function.
483    * This function will emit FocusedActorActivatedSignal.
484    * @param actor The actor to activate
485    */
486   void DoActivate(Actor actor);
487
488   /**
489    * Set whether the actor is focusable or not. A focusable property will be registered for
490    * the actor if not yet.
491    * @param actor The actor to be focused
492    * @param focusable Whether the actor is focusable or not
493    */
494   void SetFocusable(Actor actor, bool focusable);
495
496   /**
497    * Handle the accessibility pan gesture.
498    * @param[in]  panEvent  The pan event to be handled.
499    * @return whether the gesture is handled successfully or not.
500    */
501   virtual bool HandlePanGesture(const Integration::PanGestureEvent& panEvent);
502
503   /**
504    * Change the accessibility status when Accessibility feature(screen-reader) turned on or off.
505    * @return whether the status is changed or not.
506    */
507   virtual bool ChangeAccessibilityStatus();
508
509   /**
510    * Clear the accessibility focus from the current focused actor.
511    * @return whether the focus is cleared or not.
512    */
513   virtual bool ClearAccessibilityFocus();
514
515   /**
516    * Perform the accessibility action associated with a scroll event.
517    * @param touchEvent The touch point (and time) of the event.
518    * @return whether the focus is cleared or not.
519    */
520   virtual bool AccessibilityActionScroll( Dali::TouchEvent& touchEvent );
521
522   /**
523    * Perform the accessibility action to move focus to the previous focusable actor (by one finger flick up).
524    * @param allowEndFeedback true if end of list feedback should be played when the focus is alread reached to the end
525    * @return whether the accessibility action is performed or not.
526    */
527   virtual bool AccessibilityActionPrevious(bool allowEndFeedback);
528
529   /**
530    * Perform the accessibility action to move focus to the next focusable actor (by one finger flick down).
531    * @param allowEndFeedback true if end of list feedback should be played when the focus is alread reached to the end
532    * @return whether the accessibility action is performed or not.
533    */
534   virtual bool AccessibilityActionNext(bool allowEndFeedback);
535
536   /**
537    * Perform the accessibility action to move focus to the previous focusable actor (by one finger flick left).
538    * @param allowEndFeedback true if end of list feedback should be played when the focus is alread reached to the end
539    * @return whether the accessibility action is performed or not.
540    */
541   virtual bool AccessibilityActionReadPrevious(bool allowEndFeedback);
542
543   /**
544    * Perform the accessibility action to move focus to the next focusable actor (by one finger flick right).
545    * @param allowEndFeedback true if end of list feedback should be played when the focus is alread reached to the end
546    * @return whether the accessibility action is performed or not.
547    */
548   virtual bool AccessibilityActionReadNext(bool allowEndFeedback);
549
550   /**
551    * Perform the accessibility action to focus and read the actor (by one finger tap or move).
552    * @param allowReadAgain true if the action read again the same object (i.e. read action)
553    *                       false if the action just read when the focus object is changed (i.e. over action)
554    * @return whether the accessibility action is performed or not.
555    */
556   virtual bool AccessibilityActionRead(bool allowReadAgain);
557
558   /**
559    * Perform the accessibility action to activate the current focused actor (by one finger double tap).
560    * @return whether the accessibility action is performed or not.
561    */
562   virtual bool AccessibilityActionActivate();
563
564   /**
565    * Perform the accessibility action to change the value when the current focused actor is a slider
566    * (by double finger down and move up and right).
567    * @return whether the accessibility action is performed or not.
568    */
569   virtual bool AccessibilityActionUp();
570
571   /**
572    * Perform the accessibility action to change the value when the current focused actor is a slider
573    * (by double finger down and move down and left).
574    * @return whether the accessibility action is performed or not.
575    */
576   virtual bool AccessibilityActionDown();
577
578   /**
579    * Perform the accessibility action to navigate back (by two fingers circle draw).
580    * @return whether the accessibility action is performed or not.
581    */
582   virtual bool AccessibilityActionBack();
583
584   /**
585    * Perform the accessibility action to scroll up the list and focus on the first item on the list
586    * after the scrolling and read the item (by two finger swipe up).
587    * @return whether the accessibility action is performed or not.
588    */
589   virtual bool AccessibilityActionScrollUp();
590
591   /**
592    * Perform the accessibility action to scroll down the list and focus on the first item on the list
593    * after the scrolling and read the item (by two finger swipe down).
594    * @return whether the accessibility action is performed or not.
595    */
596   virtual bool AccessibilityActionScrollDown();
597
598   /**
599    * Perform the accessibility action to scroll left to the previous page (by two finger swipe left).
600    * @return whether the accessibility action is performed or not.
601    */
602   virtual bool AccessibilityActionPageLeft();
603
604   /**
605    * Perform the accessibility action to scroll right to the next page (by two finger swipe right).
606    * @return whether the accessibility action is performed or not.
607    */
608   virtual bool AccessibilityActionPageRight();
609
610   /**
611    * Perform the accessibility action to scroll up to the previous page (by one finger swipe left and right).
612    * @return whether the accessibility action is performed or not.
613    */
614   virtual bool AccessibilityActionPageUp();
615
616   /**
617    * Perform the accessibility action to scroll down to the next page (by one finger swipe right and left).
618    * @return whether the accessibility action is performed or not.
619    */
620   virtual bool AccessibilityActionPageDown();
621
622   /**
623    * Perform the accessibility action to move the focus to the first item on the screen
624    * (by one finger swipe up and down).
625    * @return whether the accessibility action is performed or not.
626    */
627   virtual bool AccessibilityActionMoveToFirst();
628
629   /**
630    * Perform the accessibility action to move the focus to the last item on the screen
631    * (by one finger swipe down and up).
632    * @return whether the accessibility action is performed or not.
633    */
634   virtual bool AccessibilityActionMoveToLast();
635
636   /**
637    * Perform the accessibility action to move the focus to the first item on the top
638    * and read from the top item continously (by three fingers single tap).
639    * @return whether the accessibility action is performed or not.
640    */
641   virtual bool AccessibilityActionReadFromTop();
642
643   /**
644    * Perform the accessibility action to move the focus to and read from the next item
645    * continously (by three fingers double tap).
646    * @return whether the accessibility action is performed or not.
647    */
648   virtual bool AccessibilityActionReadFromNext();
649
650   /**
651    * Perform the accessibility action to move the focus to do the zooming (by one finger triple tap).
652    * @return whether the accessibility action is performed or not.
653    */
654   virtual bool AccessibilityActionZoom();
655
656   /**
657    * Perform the accessibility action to read the information in the indicator (by two fingers triple tap).
658    * @return whether the accessibility action is performed or not.
659    */
660   virtual bool AccessibilityActionReadIndicatorInformation();
661
662   /**
663    * Perform the accessibility action to pause/resume the current read out (by two fingers single tap).
664    * @return whether the accessibility action is performed or not.
665    */
666   virtual bool AccessibilityActionReadPauseResume();
667
668   /**
669    * Perform the accessibility action to start/stop the current action (by two fingers double tap).
670    * @return whether the accessibility action is performed or not.
671    */
672   virtual bool AccessibilityActionStartStop();
673
674   /**
675    * Perform the accessibility action to mouse move (by one finger tap & hold and move).
676    * @param touchEvent touch event structure
677    * @return whether the accessibility action is performed or not.
678    */
679   virtual bool AccessibilityActionTouch(const TouchEvent& touchEvent);
680
681   /**
682    * This function is connected to the TtsPlayer StateChangeSignal.
683    * It is called when the TTS players state changes.
684    * @param previousState The previous state of the TTS player (for comparison)
685    * @param currentState  The current state of the TTS player
686    */
687   void TtsStateChanged( const Dali::TtsPlayer::State previousState, const Dali::TtsPlayer::State currentState );
688
689 private:
690
691   // Undefined
692   AccessibilityManager(const AccessibilityManager&);
693
694   AccessibilityManager& operator=(const AccessibilityManager& rhs);
695
696 private:
697
698   Toolkit::AccessibilityManager::FocusChangedSignalType mFocusChangedSignal; ///< The signal to notify the focus change
699   Toolkit::AccessibilityManager::FocusOvershotSignalType mFocusOvershotSignal; ///< The signal to notify the focus overshooted
700   Toolkit::AccessibilityManager::FocusedActorActivatedSignalType mFocusedActorActivatedSignal; ///< The signal to notify the activation of focused actor
701
702   // Action signals.
703   AccessibilityActionSignalType       mStatusChangedSignal;
704   AccessibilityActionSignalType       mActionNextSignal;
705   AccessibilityActionSignalType       mActionPreviousSignal;
706   AccessibilityActionSignalType       mActionActivateSignal;
707   AccessibilityActionSignalType       mActionOverSignal;
708   AccessibilityActionSignalType       mActionReadSignal;
709   AccessibilityActionSignalType       mActionReadNextSignal;
710   AccessibilityActionSignalType       mActionReadPreviousSignal;
711   AccessibilityActionSignalType       mActionUpSignal;
712   AccessibilityActionSignalType       mActionDownSignal;
713   AccessibilityActionSignalType       mActionClearFocusSignal;
714   AccessibilityActionSignalType       mActionBackSignal;
715   AccessibilityActionSignalType       mActionScrollUpSignal;
716   AccessibilityActionSignalType       mActionScrollDownSignal;
717   AccessibilityActionSignalType       mActionPageLeftSignal;
718   AccessibilityActionSignalType       mActionPageRightSignal;
719   AccessibilityActionSignalType       mActionPageUpSignal;
720   AccessibilityActionSignalType       mActionPageDownSignal;
721   AccessibilityActionSignalType       mActionMoveToFirstSignal;
722   AccessibilityActionSignalType       mActionMoveToLastSignal;
723   AccessibilityActionSignalType       mActionReadFromTopSignal;
724   AccessibilityActionSignalType       mActionReadFromNextSignal;
725   AccessibilityActionSignalType       mActionZoomSignal;
726   AccessibilityActionSignalType       mActionReadIndicatorInformationSignal;
727   AccessibilityActionSignalType       mActionReadPauseResumeSignal;
728   AccessibilityActionSignalType       mActionStartStopSignal;
729   AccessibilityActionScrollSignalType mActionScrollSignal;
730
731   FocusIDContainer mFocusIDContainer;       ///< The container to look up actor ID by focus order
732   IDAdditionalInfoContainer mIDAdditionalInfoContainer; ///< The container to look up additional information by actor ID
733   FocusIDPair mCurrentFocusActor;           ///< The focus order and actor ID of current focused actor
734   Actor mCurrentGesturedActor;              ///< The actor that will handle the gesture
735   Actor mFocusIndicatorActor;               ///< The focus indicator actor shared by all the focusable actors for highlight
736   Vector2 mPreviousPosition;                ///< The previous pan position; useful for calculating velocity for Gesture::Finished events
737   unsigned int mRecursiveFocusMoveCounter;  ///< The counter to count the number of recursive focus movement attempted before the focus movement is successful.
738
739   bool mIsWrapped:1;                        ///< Whether the focus movement is wrapped around or not
740   bool mIsFocusWithinGroup:1;               ///< Whether the focus movement is limited to the current focus group or not
741   bool mIsEndcapFeedbackEnabled:1;          ///< Whether the endcap feedback need to be played when the focus leaves the end or vice versa
742   bool mIsEndcapFeedbackPlayed:1;           ///< Whether the endcap feedback was played or not
743   bool mIsAccessibilityTtsEnabled:1;        ///< Whether accessibility feature(screen-reader) turned on/off
744   bool mTtsCreated:1;                       ///< Whether the TTS Player has been accessed
745   bool mIsFocusIndicatorEnabled:1;          ///< Whether indicator should be shown / hidden. It could be enabled when TTS enabled or 'Tab' key operated.
746   bool mContinuousPlayMode:1;               ///< Keeps track of whether or not we are in continuous play mode
747
748 };
749
750 } // namespace Internal
751
752 inline Internal::AccessibilityManager& GetImpl(Dali::Toolkit::AccessibilityManager& obj)
753 {
754   DALI_ASSERT_ALWAYS(obj);
755
756   Dali::BaseObject& handle = obj.GetBaseObject();
757
758   return static_cast<Internal::AccessibilityManager&>(handle);
759 }
760
761 inline const Internal::AccessibilityManager& GetImpl(const Dali::Toolkit::AccessibilityManager& obj)
762 {
763   DALI_ASSERT_ALWAYS(obj);
764
765   const Dali::BaseObject& handle = obj.GetBaseObject();
766
767   return static_cast<const Internal::AccessibilityManager&>(handle);
768 }
769
770 } // namespace Toolkit
771
772 } // namespace Dali
773
774 #endif // __DALI_TOOLKIT_INTERNAL_ACCESSIBILITY_MANAGER_H__