libaurum: Fix indentation and clean code up
[platform/core/uifw/aurum.git] / libaurum / inc / Impl / Accessibility / AtspiAccessibleWatcher.h
1 #pragma once
2
3 #include "AccessibleNode.h"
4 #include "AccessibleWatcher.h"
5
6 #include <atspi/atspi.h>
7 #include <gio/gio.h>
8
9 #include <shared_mutex>
10 #include <memory>
11 #include <list>
12 #include <vector>
13 #include <set>
14 #include <map>
15
16 /**
17  * @brief WindowActivateInfoType enum class
18  * @since_tizen 5.5
19  */
20 enum class WindowActivateInfoType {
21     DEFAULT_LABEL_ENALBED = 0x00,
22     DEFAULT_LABEL_ENALBED_WITHOUT_WINDOW = 0x01,
23     DEFAULT_LABEL_DISABLED = 0x02,
24     KEYBOARD = 0x04,
25 };
26
27 /**
28  * @brief IAtspiEvents Interface
29  * @since_tizen 5.5
30  */
31 class IAtspiEvents {
32 public:
33     /**
34      * @brief TBD
35      * @since_tizen 5.5
36      */
37     virtual ~IAtspiEvents() {}
38
39     /**
40      * @brief TBD
41      * @since_tizen 5.5
42      */
43     virtual void onWindowActivated(AtspiAccessible *node, WindowActivateInfoType type) = 0;
44
45     /**
46      * @brief TBD
47      * @since_tizen 5.5
48      */
49     virtual void onWindowDeactivated(AtspiAccessible *node) = 0;
50
51     /**
52      * @brief TBD
53      * @since_tizen 5.5
54      */
55     virtual void onWindowCreated(AtspiAccessible *node) = 0;
56
57     /**
58      * @brief TBD
59      * @since_tizen 5.5
60      */
61     virtual void onWindowDestroyed(AtspiAccessible *node) = 0;
62
63     /**
64      * @brief TBD
65      * @since_tizen 5.5
66      */
67     virtual void onVisibilityChanged(AtspiAccessible *node, bool visible) = 0;
68
69     /**
70      * @brief TBD
71      * @since_tizen 5.5
72      */
73     virtual void onObjectDefunct(AtspiAccessible *node) = 0;
74 };
75
76
77 class AtspiAccessibleWatcher : public AccessibleWatcher, public IAtspiEvents {
78 public:
79     AtspiAccessibleWatcher();
80     virtual ~AtspiAccessibleWatcher();
81
82 public:
83     /**
84      * @brief TBD
85      * @since_tizen 5.5
86      */
87     virtual int getApplicationCount(void) const override;
88
89     /**
90      * @brief TBD
91      * @since_tizen 5.5
92      */
93     virtual std::shared_ptr<AccessibleApplication> getApplicationAt(int index) const override;
94
95     /**
96      * @brief TBD
97      * @since_tizen 5.5
98      */
99     virtual std::vector<std::shared_ptr<AccessibleApplication>> getApplications(void) const override;
100
101     /**
102      * @brief TBD
103      * @since_tizen 6.5
104      */
105     virtual bool executeAndWaitForEvents(const Runnable *cmd, const A11yEvent type, const int timeout) override;
106
107 public:
108     /**
109      * @brief TBD
110      * @since_tizen 5.5
111      */
112     static void onAtspiEvents(AtspiEvent *event, void *user_data);
113
114     /**
115      * @brief TBD
116      * @since_tizen 5.5
117      */
118     void onWindowActivated(AtspiAccessible *node, WindowActivateInfoType type) override;
119
120     /**
121      * @brief TBD
122      * @since_tizen 5.5
123      */
124     void onWindowDeactivated(AtspiAccessible *node) override;
125
126     /**
127      * @brief TBD
128      * @since_tizen 5.5
129      */
130     void onWindowCreated(AtspiAccessible *node) override;
131
132     /**
133      * @brief TBD
134      * @since_tizen 5.5
135      */
136     void onWindowDestroyed(AtspiAccessible *node) override;
137
138     /**
139      * @brief TBD
140      * @since_tizen 5.5
141      */
142     void onVisibilityChanged(AtspiAccessible *node, bool visible) override;
143
144     /**
145      * @brief TBD
146      * @since_tizen 5.5
147      */
148     void onObjectDefunct(AtspiAccessible *node) override;
149
150     /**
151      * @brief TBD
152      * @since_tizen 6.5
153      */
154     static void onEventListener(AtspiEvent *event, void *user_data);
155 private:
156     /**
157      * @brief TBD
158      * @since_tizen 5.5
159      */
160     bool removeFromActivatedList(AtspiAccessible *node);
161
162     /**
163      * @brief TBD
164      * @since_tizen 5.5
165      */
166     bool addToActivatedList(AtspiAccessible *node);
167
168     /**
169      * @brief TBD
170      * @since_tizen 5.5
171      */
172     bool removeFromWindowSet(AtspiAccessible *node);
173
174     /**
175      * @brief TBD
176      * @since_tizen 5.5
177      */
178     bool addToWindowSet(AtspiAccessible *node);
179
180     void print_debug();
181
182     /**
183      * @brief TBD
184      * @since_tizen 6.5
185      */
186     void addEventListener(AtspiEventListener *listener, A11yEvent type);
187
188     /**
189      * @brief TBD
190      * @since_tizen 6.5
191      */
192     void removeEventListener(AtspiEventListener *listener, A11yEvent type);
193
194 public:
195     /**
196      * @brief TBD
197      */
198     static guint timeoutId;
199
200 private:
201     /**
202      * @brief TBD
203      */
204     GDBusProxy *                                  mDbusProxy;
205
206     /**
207      * @brief TBD
208      */
209     std::list<AtspiAccessible *>          mActivatedWindowList;
210
211     /**
212      * @brief TBD
213      */
214     std::list<AtspiAccessible *>          mActivatedApplicationList;
215
216     /**
217      * @brief TBD
218      */
219     std::set<AtspiAccessible *>            mWindowSet;
220
221     /**
222      * @brief TBD
223      */
224     std::map<AtspiAccessible *, AtspiAccessible *> mWindowAppMap;
225
226     /**
227      * @brief TBD
228      */
229     static GThread *                                      mEventThread;
230
231     /**
232      * @brief TBD
233      */
234         static std::vector<std::shared_ptr<A11yEventInfo>>    mEventQueue;
235 };