Merge "Enable atspi" into devel/master
[platform/core/uifw/dali-adaptor.git] / dali / internal / accessibility / bridge / bridge-collection.h
1 #ifndef DALI_INTERNAL_ACCESSIBILITY_BRIDGE_COLLECTION_H
2 #define DALI_INTERNAL_ACCESSIBILITY_BRIDGE_COLLECTION_H
3
4 /*
5  * Copyright (c) 2021 Samsung Electronics Co., Ltd.
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  */
20
21 // EXTERNAL INCLUDES
22 #include <array>
23 #include <tuple>
24 #include <unordered_map>
25 #include <vector>
26
27 // INTERNAL INCLUDES
28 #include <dali/internal/accessibility/bridge/bridge-base.h>
29
30 class BridgeCollection : public virtual BridgeBase
31 {
32 private:
33   struct Comparer;
34   static void VisitNodes(Dali::Accessibility::Accessible* obj, std::vector<Dali::Accessibility::Accessible*>& result, Comparer& cmp, size_t maxCount);
35
36 protected:
37   BridgeCollection() = default;
38
39   void RegisterInterfaces();
40
41   Dali::Accessibility::Collection* FindSelf() const;
42
43 public:
44   using MatchRule = std::tuple<
45     std::array<int32_t, 2>,
46     int32_t,
47     std::unordered_map<std::string, std::string>,
48     int32_t,
49     std::array<int32_t, 4>,
50     int32_t,
51     std::vector<std::string>,
52     int32_t,
53     bool>;
54   struct Index
55   {
56     enum
57     {
58       States,
59       StatesMatchType,
60       Attributes,
61       AttributesMatchType,
62       Roles,
63       RolesMatchType,
64       Interfaces,
65       InterfacesMatchType,
66     };
67   };
68
69   DBus::ValueOrError<std::vector<Dali::Accessibility::Accessible*> > GetMatches(MatchRule rule, uint32_t sortBy, int32_t count, bool traverse);
70 };
71
72 #endif // DALI_INTERNAL_ACCESSIBILITY_BRIDGE_COLLECTION_H