Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUi_AccessibilityManager.h
1 //
2 // Open Service Platform
3 // Copyright (c) 2012-2013 Samsung Electronics Co., Ltd.
4 //
5 // Licensed under the Flora License, Version 1.0 (the License);
6 // you may not use this file except in compliance with the License.
7 // You may obtain a copy of the License at
8 //
9 //     http://floralicense.org/license/
10 //
11 // Unless required by applicable law or agreed to in writing, software
12 // distributed under the License is distributed on an AS IS BASIS,
13 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 // See the License for the specific language governing permissions and
15 // limitations under the License.
16 //
17
18 /**
19 * @file        FUi_AccessibilityManager.h
20 * @brief       This is the header file for the _AccessibilityManager class.
21 *
22 * This header file contains the declarations of the _AccessibilityManager class.
23 *
24 */
25 #ifndef _FUI_INTERNAL_ACCESSIBILITY_MANAGER_H_
26 #define _FUI_INTERNAL_ACCESSIBILITY_MANAGER_H_
27
28 #include <FBaseResult.h>
29 #include <FGrpPoint.h>
30 #include <FGrpRectangle.h>
31 #include <FUiAccessibilityTypes.h>
32 #include <FBaseColLinkedListT.h>
33 #include <FBase_ObjectManagerT.h>
34 #include "FUi_ControlManager.h"
35 #include "FUi_AccessibilityGesture.h"
36
37 namespace Tizen { namespace Base
38 {
39 class String;
40 }} //Tizen::Base
41
42 namespace Tizen { namespace Ui { namespace Animations
43 {
44 class VisualElement;
45 }}} //Tizen::Ui::Animations
46
47 namespace Tizen { namespace Ui
48 {
49
50 class _Control;
51 class _TouchGestureDetector;
52 class _AccessibilityTtsPlayer;
53 class _AccessibilitySystemSettingLoader;
54 class _AccessibilityContainer;
55 class _AccessibilityElement;
56
57 enum _AccessibilityFocusDirection
58 {
59         _ACCESSIBILITY_FOCUS_DIRECTION_PREVIOUS = -1,
60         _ACCESSIBILITY_FOCUS_DIRECTION_NONE = 0,
61         _ACCESSIBILITY_FOCUS_DIRECTION_NEXT = 1
62 };
63
64 class _AccessibilityManager
65 {
66 public:
67         static _AccessibilityManager* GetInstance(void);
68         static void CreateInstance(void);
69         static void ReleaseInstance(void);
70         ~_AccessibilityManager(void);
71
72         AccessibilityScreenReaderStatus GetReadingtatus(void);
73         void ReadElement(int index);
74         result ReadElement(const _AccessibilityElement& element);
75         result ReadContent(const Tizen::Base::String& content);
76         result ReadingStop(void);
77         result ReadingPause(void);
78         result ReadingResume(void);
79         void OnStartReading(const Tizen::Base::String& grammar);
80         void OnFinishReading(const Tizen::Base::String& grammar);
81
82         void AddContainer(const _AccessibilityContainer& container);
83         void RemoveContainer(const _AccessibilityContainer& container);
84
85         bool ProcessGesture(_AccessibilityGestureType type, const Tizen::Graphics::Point& point,const _TouchGestureDetector* pDetector = null);
86         Tizen::Base::String GetCurrentGrammar(void);
87
88         void OnAccessibilityScreenReaderIsActivated(bool set);
89         bool IsAccessibilityActivated(void);
90         bool IsScreenReaderActivated(void);
91         int GetLargeFontSize(void);
92
93         void RequestToDrawFocusUi(void);
94         void RequestAutoReading(void);
95
96         Tizen::Base::_HandleT <_AccessibilityContainer> Register(_AccessibilityContainer* pObject);
97         void Unregister(Tizen::Base::_HandleT <_AccessibilityContainer> handle);
98
99         static bool IsActivated();
100 private:
101         enum GestureMode
102         {
103                 MODE_NONE,
104                 MODE_TAP,
105                 MODE_FOCUS_MOVE,
106                 MODE_PANNING
107         };
108         _AccessibilityManager(void);
109         _AccessibilityManager(const _AccessibilityManager& rhs);
110         _AccessibilityManager& operator =(const _AccessibilityManager& rhs);
111         static void InitializeInstance(void);
112         bool MoveFocus(_AccessibilityFocusDirection direction);
113         void DrawFocusUi(const _AccessibilityContainer& container);
114         void MakeList(void);
115         void MakeList(_AccessibilityContainer* container);
116         void Initialize(void);
117         void ShowPopup(const Tizen::Base::String& content);
118         void ShowPopup(void);
119         void HidePopup(void);
120         bool IsContainerValid(_AccessibilityContainer* pContainer);
121         bool IsTargetContainerValid(void);
122         bool IsVisible(_AccessibilityElement* pElement);
123         bool IsVisible(_AccessibilityContainer* pContainer);
124         void SetGestureMode(GestureMode mode);
125         GestureMode GetGestureMode(void);
126 private:
127
128         Tizen::Base::_ObjectManagerT <_AccessibilityContainer> __objectManager;
129         _AccessibilityGesture* __pAccGesture;
130         _AccessibilityTtsPlayer* __pPlayer;
131         _AccessibilitySystemSettingLoader* __pSettingLoader;
132         _AccessibilityContainer* __pTargetContainer;
133         _AccessibilityElement* __pTargetElement;
134         _AccessibilityElement* __pTitleElement;
135         Tizen::Base::Collection::LinkedListT<_AccessibilityContainer*> __containerList;
136         Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __candidateList;
137         GestureMode __mode;
138         _ControlHandle __targetControlHandle;
139         Tizen::Ui::Animations::VisualElement* __pReadingVe;
140         Tizen::Ui::Animations::VisualElement* __pFocusVe;
141         _Control* __pPanningControl;
142         static bool __screenReaderIsEnabled;
143 };//class _AccessibilityManager
144 }} //Tizen::Ui
145
146 #endif //_FUI_INTERNAL_ACCESSIBILITY_MANAGER_H_
147