2 #include "AccessibleNode.h"
3 #include "AccessibleWatcher.h"
5 #include <atspi/atspi.h>
9 #include <shared_mutex>
17 * @brief WindowActivateInfoType enum class
20 enum class WindowActivateInfoType {
21 DEFAULT_LABEL_ENALBED = 0x00,
22 DEFAULT_LABEL_ENALBED_WITHOUT_WINDOW = 0x01,
23 DEFAULT_LABEL_DISABLED = 0x02,
28 * @brief IAtspiEvents Interface
37 virtual ~IAtspiEvents() {}
43 virtual void onWindowActivated(AtspiAccessible* node, WindowActivateInfoType type) = 0;
49 virtual void onWindowDeactivated(AtspiAccessible* node) = 0;
55 virtual void onWindowCreated(AtspiAccessible* node) = 0;
61 virtual void onWindowDestroyed(AtspiAccessible* node) = 0;
67 virtual void onVisibilityChanged(AtspiAccessible* node, bool visible) = 0;
73 virtual void onObjectDefunct(AtspiAccessible* node) = 0;
77 class AtspiAccessibleWatcher : public AccessibleWatcher, public IAtspiEvents {
79 AtspiAccessibleWatcher();
80 virtual ~AtspiAccessibleWatcher();
87 virtual int getApplicationCount(void) const override;
93 virtual std::shared_ptr<AccessibleApplication> getApplicationAt(int index) const override;
99 virtual std::vector<std::shared_ptr<AccessibleApplication>> getApplications(void) const override;
105 //std::shared_ptr<AccessibleNode> getRootNode() const override;
111 //std::vector<std::shared_ptr<AccessibleNode>> getTopNode() const override;
119 static void onAtspiWindowEvent(AtspiEvent *event, void *user_data);
125 void onWindowActivated(AtspiAccessible* node, WindowActivateInfoType type) override;
131 void onWindowDeactivated(AtspiAccessible* node) override;
137 void onWindowCreated(AtspiAccessible* node) override;
143 void onWindowDestroyed(AtspiAccessible* node) override;
149 void onVisibilityChanged(AtspiAccessible* node, bool visible) override;
155 void onObjectDefunct(AtspiAccessible* node) override;
162 bool removeFromActivatedList(AtspiAccessible *node);
168 bool addToActivatedList(AtspiAccessible *node);
174 bool removeFromWindowSet(AtspiAccessible *node);
180 bool addToWindowSet(AtspiAccessible *node);
188 static AtspiEventListener * listener;
193 GDBusProxy * mDbusProxy;
203 std::list<AtspiAccessible *> mActivatedWindowList;
208 std::list<AtspiAccessible *> mActivatedApplicationList;
213 std::set<AtspiAccessible *> mWindowSet;
215 std::map<AtspiAccessible *, AtspiAccessible *> mWindowAppMap;