libaurum: apply smart pointer wider and extract impl out
[platform/core/uifw/aurum.git] / libaurum / inc / Accessibility / AccessibleNode.h
1 #ifndef ACCESSIBLE_NODE_H
2 #define ACCESSIBLE_NODE_H
3
4 #include <map>
5 #include <memory>
6 #include <string>
7 #include <vector>
8
9 #include "AccessibleUtils.h"
10 #include "Rect.h"
11 #include "config.h"
12
13 /**
14  * @brief AccessibleNodeInterface enum class
15  * @since_tizen 5.5
16  */
17 enum class AccessibleNodeInterface {
18     ACTION          = 0x0001,
19     COLLECTION      = 0X0002,
20     COMPONENT       = 0X0004,
21     DOCUMENT        = 0X0008,
22
23     EDITABLETEXT    = 0X0010,
24     HYPERTEXT       = 0X0020,
25     IMAGE           = 0X0040,
26     SELECTION       = 0X0080,
27
28     TEXT            = 0X0100,
29     VALUE           = 0X0200,
30     ACCESSIBLE      = 0X0400,
31     TABLE           = 0X0800,
32
33     TABLECELL       = 0X1000,
34 };
35
36 /**
37  * @brief NodeFeatureProperties enum class
38  * @since_tizen 5.5
39  */
40 enum class NodeFeatureProperties {
41     CHECKABLE       = 0x0001,
42     CHECKED         = 0X0002,
43     CLICKABLE       = 0X0004,
44     ENABLED         = 0X0008,
45
46     FOCUSABLE       = 0X0010,
47     FOCUSED         = 0X0020,
48     LONGCLICKABLE   = 0X0040,
49     SCROLLABLE      = 0X0080,
50
51     SELECTABLE      = 0X0100,
52     SELECTED        = 0X0200,
53     VISIBLE         = 0X0400,
54     SHOWING         = 0X0800,
55     ACTIVE          = 0X1000,
56     INVALID         = 0X2000,
57 };
58
59 class IAccessibleNode {
60 public:
61     virtual ~IAccessibleNode() = 0;
62
63     
64 };
65
66 /**
67  * @brief AccessibleNode Class
68  * @since_tizen 5.5
69  */
70 class AccessibleNode {
71 public:  // Constructor & Destructor
72     /**
73      * @brief TBD
74      * @since_tizen 5.5
75      */
76     AccessibleNode();
77
78     /**
79      * @brief TBD
80      * @since_tizen 5.5
81      */
82     virtual ~AccessibleNode();
83
84 public:
85     /**
86      * @brief TBD
87      * @since_tizen 5.5
88      */
89     virtual int getChildCount() const = 0;
90
91     /**
92      * @brief TBD
93      * @since_tizen 5.5
94      */
95     virtual std::shared_ptr<AccessibleNode> getChildAt(int index) const = 0;
96
97     /**
98      * @brief TBD
99      * @since_tizen 5.5
100      */
101     virtual std::vector<std::shared_ptr<AccessibleNode>> getChildren() const = 0;
102
103     /**
104      * @brief TBD
105      * @since_tizen 5.5
106      */
107     virtual std::shared_ptr<AccessibleNode> getParent() const = 0;
108
109 public:
110     /**
111      * @brief TBD
112      * @since_tizen 5.5
113      */
114     std::string getText() const;
115
116     /**
117      * @brief TBD
118      * @since_tizen 5.5
119      */
120     std::string getPkg() const;
121
122     /**
123      * @brief TBD
124      * @since_tizen 5.5
125      */
126     std::string getRes() const;
127
128     /**
129      * @brief TBD
130      * @since_tizen 5.5
131      */
132     std::string getRole() const;
133
134     /**
135      * @brief TBD
136      * @since_tizen 5.5
137      */
138     std::string getType() const;
139
140     /**
141      * @brief TBD
142      * @since_tizen 5.5
143      */
144     std::string getStyle() const;
145
146     /**
147      * @brief TBD
148      * @since_tizen 5.5
149      */
150     Rect<int> getBoundingBox() const;
151
152     /**
153      * @brief TBD
154      * @since_tizen 5.5
155      */
156     bool isCheckable() const;
157
158     /**
159      * @brief TBD
160      * @since_tizen 5.5
161      */
162     bool isChecked() const;
163
164     /**
165      * @brief TBD
166      * @since_tizen 5.5
167      */
168     bool isClickable() const;
169
170     /**
171      * @brief TBD
172      * @since_tizen 5.5
173      */
174     bool isEnabled() const;
175
176     /**
177      * @brief TBD
178      * @since_tizen 5.5
179      */
180     bool isFocusable() const;
181
182     /**
183      * @brief TBD
184      * @since_tizen 5.5
185      */
186     bool isFocused() const;
187
188     /**
189      * @brief TBD
190      * @since_tizen 5.5
191      */
192     bool isLongClickable() const;
193
194     /**
195      * @brief TBD
196      * @since_tizen 5.5
197      */
198     bool isScrollable() const;
199
200     /**
201      * @brief TBD
202      * @since_tizen 5.5
203      */
204     bool isSelectable() const;
205
206     /**
207      * @brief TBD
208      * @since_tizen 5.5
209      */
210     bool isSelected() const;
211
212     /**
213      * @brief TBD
214      * @since_tizen 5.5
215      */
216     bool isVisible() const;
217
218     /**
219      * @brief TBD
220      * @since_tizen 5.5
221      */
222     bool isShowing() const;
223
224     /**
225      * @brief TBD
226      * @since_tizen 5.5
227      */
228     bool isActive() const;
229
230 public:
231     /**
232      * @brief TBD
233      * @since_tizen 5.5
234      */
235     void print(int);
236
237     /**
238      * @brief TBD
239      * @since_tizen 5.5
240      */
241     void print(int, int);
242
243     /**
244      * @brief TBD
245      * @since_tizen 5.5
246      */
247     virtual void* getRawHandler(void) const = 0;
248
249     /**
250      * @brief TBD
251      * @since_tizen 5.5
252      */
253     virtual void refresh() = 0;
254
255     /**
256      * @brief TBD
257      * @since_tizen 5.5
258      */
259     virtual std::vector<std::string> getActions() const = 0;
260
261     /**
262      * @brief TBD
263      * @since_tizen 5.5
264      */
265     virtual bool doAction(std::string action) = 0;
266
267     /**
268      * @brief TBD
269      * @since_tizen 5.5
270      */
271     virtual void setValue(std::string text) = 0;
272
273 public:
274     /**
275      * @brief TBD
276      * @since_tizen 5.5
277      */
278     bool isSupporting(AccessibleNodeInterface thisIface) const;
279
280     /**
281      * @brief TBD
282      * @since_tizen 5.5
283      */
284     bool hasFeatureProperty(NodeFeatureProperties prop) const;
285
286     /**
287      * @brief TBD
288      * @since_tizen 5.5
289      */
290     void setFeatureProperty(NodeFeatureProperties prop, bool has);
291
292 protected:
293     /**
294      * @brief TBD
295      */
296     std::string mText;
297
298     /**
299      * @brief TBD
300      */
301     std::string mPkg;
302
303     /**
304      * @brief TBD
305      */
306     std::string mRole;
307
308     /**
309      * @brief TBD
310      */
311     std::string mRes;
312
313     /**
314      * @brief TBD
315      */
316     std::string mType;
317
318     /**
319      * @brief TBD
320      */
321     std::string mStyle;
322
323     /**
324      * @brief TBD
325      */
326     Rect<int> mBoundingBox;
327
328     /**
329      * @brief TBD
330      */
331     int mSupportingIfaces;
332
333     /**
334      * @brief TBD
335      */
336     int mFeatureProperty;
337
338 };
339
340 #endif