libaurum: apply smart pointer wider and extract impl out
[platform/core/uifw/aurum.git] / libaurum / src / Accessibility / AccessibleApplication.cc
1 #include "AccessibleApplication.h"
2 #include "AccessibleWatcher.h"
3
4 #include <algorithm>
5 #include <loguru.hpp>
6
7 AccessibleApplication::AccessibleApplication(std::shared_ptr<AccessibleNode> node)
8 : mNode{node}
9 {
10 }
11
12 AccessibleApplication::~AccessibleApplication()
13 {
14 }
15
16 std::shared_ptr<AccessibleNode> AccessibleApplication::getAccessibleNode()
17 {
18     return mNode;
19 }
20
21 bool AccessibleApplication::isActive(void)
22 {
23     auto children = this->getActiveWindows();
24     return children.size() > 0;
25 }
26
27 std::vector<std::shared_ptr<AccessibleWindow>> AccessibleApplication::getActiveWindows(void)
28 {
29     auto children = getWindows();
30
31     children.erase(std::remove_if(children.begin(), children.end(), [](auto child){
32                         return !(child->isActive() && child->isShowing()); // && child->isShowing() && child->isVisible());
33                     }), children.end());
34
35     LOG_SCOPE_F(INFO, "getActiveWindows app(%s) for %p, size:%d", getPackageName().c_str(), getAccessibleNode()->getRawHandler(), children.size());
36
37     return children;
38 }