c4a279d73b03340e919686b5404fa74c86b157bf
[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) 2019 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 >, int32_t,
46       std::unordered_map< std::string, std::string >, int32_t,
47       std::array< int32_t, 4 >, int32_t,
48       std::vector< std::string >, int32_t,
49       bool >;
50   struct Index
51   {
52     enum
53     {
54       States,
55       StatesMatchType,
56       Attributes,
57       AttributesMatchType,
58       Roles,
59       RolesMatchType,
60       Interfaces,
61       InterfacesMatchType,
62     };
63   };
64
65   DBus::ValueOrError< std::vector< Dali::Accessibility::Accessible* > > GetMatches( MatchRule rule, uint32_t sortBy, int32_t count, bool traverse );
66 };
67
68 #endif // DALI_INTERNAL_ACCESSIBILITY_BRIDGE_COLLECTION_H