Tizen 2.1 base
[framework/osp/uifw.git] / src / ui / inc / FUi_AccessibilityContainer.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_AccessibilityContainer.h
20  * @brief       This is the header file for the _AccessibilityContainer class.
21  *
22  * This header file contains the declarations of the _AccessibilityContainer class.
23  *
24  */
25 #ifndef _FUI_INTERNAL_ACCESSIBILITY_CONTAINER_H_
26 #define _FUI_INTERNAL_ACCESSIBILITY_CONTAINER_H_
27
28 #include <FBaseObject.h>
29 #include <FBaseResult.h>
30 #include <FBaseColLinkedListT.h>
31 #include <FUiAccessibilityTypes.h>
32 #include "FUi_AccessibilityManager.h"
33
34 namespace Tizen { namespace Base
35 {
36 class String;
37 }} //Tizen::Base
38 namespace Tizen { namespace Graphics
39 {
40 class Point;
41 class Rectangle;
42 }} //Tizen::Graphics
43
44 namespace Tizen { namespace Ui {
45
46 class IAccessibilityListener;
47 class _AccessibilityElement;
48 class _IAccessibilityListener;
49 class _Control;
50
51 enum AccessibilityScreenReaderSpeechRate
52 {
53         ACCESSIBILITY_SCREEN_READER_SPEECH_RATE_SYSTEM_SETTING,  /**< The speech rate from system setting */
54         ACCESSIBILITY_SCREEN_READER_SPEECH_RATE_VERY_SLOW,       /**< The very slow speech rate */
55         ACCESSIBILITY_SCREEN_READER_SPEECH_RATE_SLOW,            /**< The slow speech rate*/
56         ACCESSIBILITY_SCREEN_READER_SPEECH_RATE_NORMAL,          /**< The normal speech rate */
57         ACCESSIBILITY_SCREEN_READER_SPEECH_RATE_FAST,            /**< The fast speech rate */
58         ACCESSIBILITY_SCREEN_READER_SPEECH_RATE_VERY_FAST        /**< The very fast speech rate */
59 };
60
61 /**
62  * @enum AccessibilityTraits
63  *
64  * Defines the trait of the accessibility element.
65  *
66  * @since 2.0
67  */
68 enum AccessibilityTraits
69 {
70         ACCESSIBILITY_TRAITS_NONE,
71         ACCESSIBILITY_TRAITS_TITLE,
72         ACCESSIBILITY_TRAITS_OPTION_HEADER,
73         ACCESSIBILITY_TRAITS_PICTURE,
74         ACCESSIBILITY_TRAITS_STATUS_BAR,
75         ACCESSIBILITY_TRAITS_TEXT_FIELD,
76         ACCESSIBILITY_TRAITS_RATING,
77         ACCESSIBILITY_TRAITS_ACTION_BAR,
78         ACCESSIBILITY_TRAITS_ACTION_BAR_MENU,
79         ACCESSIBILITY_TRAITS_BACK_BUTTON,
80         ACCESSIBILITY_TRAITS_BUTTON,
81         ACCESSIBILITY_TRAITS_LABEL,
82         ACCESSIBILITY_TRAITS_LIST,
83         ACCESSIBILITY_TRAITS_DATA_SELECTOR,
84         ACCESSIBILITY_TRAITS_DRAG_SCROLL,
85         ACCESSIBILITY_TRAITS_EXPAND_BUTTON,
86         ACCESSIBILITY_TRAITS_FUNCTION_PANEL,
87         ACCESSIBILITY_TRAITS_IN_DEPTH_BUTTON,
88         ACCESSIBILITY_TRAITS_INDEX_SCROLL,
89         ACCESSIBILITY_TRAITS_IMAGE,
90         ACCESSIBILITY_TRAITS_INDICATOR,
91         ACCESSIBILITY_TRAITS_NOTIFICATION,
92         ACCESSIBILITY_TRAITS_RADIO_BUTTON,
93         ACCESSIBILITY_TRAITS_SCROLL_BAR,
94         ACCESSIBILITY_TRAITS_SEARCH_FIELD,
95         ACCESSIBILITY_TRAITS_SEGMENT,
96         ACCESSIBILITY_TRAITS_SLIDER,
97         ACCESSIBILITY_TRAITS_SOFT_KEY,
98         ACCESSIBILITY_TRAITS_SUB_MENU_TITLE,
99         ACCESSIBILITY_TRAITS_TAB,
100         ACCESSIBILITY_TRAITS_TICKBOX,
101         ACCESSIBILITY_TRAITS_TIME_SELECTOR,
102         ACCESSIBILITY_TRAITS_VOLUME_SLIDER,
103         ACCESSIBILITY_TRAITS_HOUR,
104         ACCESSIBILITY_TRAITS_MINUTE,
105         ACCESSIBILITY_TRAITS_SECOND,
106         ACCESSIBILITY_TRAITS_YEAR,
107         ACCESSIBILITY_TRAITS_MONTH,
108         ACCESSIBILITY_TRAITS_DAY,
109         ACCESSIBILITY_TRAITS_END
110 };
111
112 const int ACCESSIBILITY_PRIORTY_TOP = 55555;
113 const int ACCESSIBILITY_PRIORTY_NORMAL = 10000;
114 const int ACCESSIBILITY_PRIORTY_BOTTOM = 0;
115
116 class _AccessibilityContainer
117 {
118 public:
119         _AccessibilityContainer(const _Control& owner);
120         ~_AccessibilityContainer(void);
121         _Control& GetOwner(void);
122         const _Control& GetOwner(void) const;
123
124         void AddListener(const _IAccessibilityListener& listener);
125         Tizen::Base::Collection::IListT<_IAccessibilityListener*>* GetListenerListN(void) const;
126         void RemoveListener(const _IAccessibilityListener& listener);
127
128         result AddChildContainer(const _AccessibilityContainer& child);
129         result RemoveChildContainer(const _AccessibilityContainer& child);
130         const Tizen::Base::Collection::LinkedListT<_AccessibilityContainer*>* GetChildContainerList(void) const;
131
132         result AddElement(const _AccessibilityElement& element);
133         result AddElements(const Tizen::Base::Collection::IListT<_AccessibilityElement*>& elementList);
134         result InsertElement(const _AccessibilityElement& element, int index);
135         result RemoveElement(const _AccessibilityElement& element);
136         result RemoveAllElement(void);
137
138         _AccessibilityElement* GetChildElement(const Tizen::Base::String& name) const;
139         void GetElements(Tizen::Base::Collection::IListT<_AccessibilityElement*>& list) const;
140         Tizen::Base::Collection::IListT<_AccessibilityElement*>* GetElementsN(void) const;
141
142         result MoveElement(const _AccessibilityElement* pPreviousElement, const _AccessibilityElement& element);
143
144         void ManageFocus(bool set);
145         bool IsFocusManaged(void);
146         void SetCurrentFocusedElement(_AccessibilityElement* pElement);
147         _AccessibilityElement* GetCurrentFocusedElement(void) const;
148         _AccessibilityElement* Hit(const Tizen::Graphics::Point& point) const;
149         bool MoveFocus(_AccessibilityFocusDirection direction);
150         bool MoveFocus(const Tizen::Graphics::Point& point);
151         void ResetFocus(void);
152         void SortElements(void);
153
154         bool SetParent(const _AccessibilityContainer& parent);
155         _AccessibilityContainer* GetParent(void) const;
156         void SetPriority(int level);
157         int GetPriority(void);
158         void SetEnableState(bool enabledState);
159         bool GetEnableState(void);
160         void Activate(bool enable);
161         bool IsActivated(void) const;
162         Tizen::Graphics::Rectangle GetAbsoluteBounds(void) const;
163
164         void ReadingAll(void);
165         Tizen::Base::String GetCurrentGrammar(void) const;
166         AccessibilityScreenReaderStatus GetStatus(void) const;
167         Tizen::Base::_HandleT <_AccessibilityContainer> GetHandle(void) const;
168
169 private:
170         _AccessibilityContainer(const _AccessibilityContainer& rhs);
171         _AccessibilityContainer& operator =(const _AccessibilityContainer& rhs);
172
173 private:
174         Tizen::Base::_HandleT <_AccessibilityContainer> __handle;
175         _Control* __pOwner;
176         _AccessibilityContainer* __pParent;
177         Tizen::Base::Collection::LinkedListT<_AccessibilityElement*> __elementList;
178         Tizen::Base::Collection::LinkedListT<_AccessibilityContainer*> __childContainerList;
179         Tizen::Base::Collection::LinkedListT<_IAccessibilityListener*> __listenerList;
180         int __currentElementIndex;
181         int __level;
182         bool __activated;
183         IAccessibilityListener* __pListener;
184         bool __enableState;
185         bool __focusManaged;
186 }; //class _AccessibilityContainer
187 }} //Tizen::Ui
188
189 #endif //_FUI_INTERNAL_ACCESSIBILITY_CONTAINER_H_