fcc42172dc162b7bf9983e69f3294255ae9d8ce6
[platform/core/uifw/dali-adaptor.git] / dali / dali-bridge / src / BridgeAccessible.hpp
1 #ifndef BRIDGE_ACCESSIBLE_HPP
2 #define BRIDGE_ACCESSIBLE_HPP
3
4 #include "BridgeBase.hpp"
5 #include <array>
6 #include <string>
7 #include <unordered_map>
8 #include <vector>
9
10 class BridgeAccessible : public virtual BridgeBase
11 {
12 protected:
13   BridgeAccessible();
14
15   void RegisterInterfaces();
16
17 public:
18   enum class GetNeighborSearchMode
19   {
20     normal = 0,
21     recurseFromRoot = 1,
22     continueAfterFailedRecursion = 2,
23     recurseToOutside = 3,
24   };
25   int GetChildCount();
26   DBus::ValueOrError< Dali::Accessibility::Accessible* > GetChildAtIndex( int index );
27   Dali::Accessibility::Accessible* GetParent();
28   DBus::ValueOrError< std::vector< Dali::Accessibility::Accessible* > > GetChildren();
29   std::string GetName();
30   std::string GetDescription();
31   DBus::ValueOrError< uint32_t > GetRole();
32   DBus::ValueOrError< std::string > GetRoleName();
33   DBus::ValueOrError< std::string > GetLocalizedRoleName();
34   DBus::ValueOrError< int32_t > GetIndexInParent();
35   DBus::ValueOrError< std::array< uint32_t, 2 > > GetStates();
36   DBus::ValueOrError< std::unordered_map< std::string, std::string > > GetAttributes();
37   DBus::ValueOrError< std::vector< std::string > > GetInterfaces();
38   DBus::ValueOrError< Dali::Accessibility::Accessible*, uint8_t, Dali::Accessibility::Accessible* > GetNavigableAtPoint( int32_t x, int32_t y, uint32_t coordType );
39   DBus::ValueOrError< Dali::Accessibility::Accessible*, uint8_t > GetNeighbor( std::string root_path, int32_t direction, int32_t search_mode );
40   DBus::ValueOrError< Dali::Accessibility::Accessible*, uint32_t > GetDefaultLabelInfo();
41   using ReadingMaterialType = DBus::ValueOrError<
42       std::unordered_map< std::string, std::string >, // attributes
43       std::string,                                    // name
44       std::string,                                    // labeledByName
45       std::string,                                    // textIfceName
46       uint32_t,
47       Dali::Accessibility::States,
48       std::string,                      // localized name
49       int32_t,                          // child count
50       double,                           // current value
51       double,                           // minimum increment
52       double,                           // maximum value
53       double,                           // minimum value
54       std::string,                      // description
55       int32_t,                          // index in parent
56       bool,                             // isSelectedInParent
57       bool,                             // hasCheckBoxChild
58       int32_t,                          // listChildrenCount
59       int32_t,                          // firstSelectedChildIndex
60       Dali::Accessibility::Accessible*, // parent
61       Dali::Accessibility::States,      // parentStateSet
62       int32_t,                          // parentChildCount
63       uint32_t,                         // parentRole
64       int32_t,                          // selectedChildCount,
65       Dali::Accessibility::Accessible*  // describedByObject
66       >;
67
68   ReadingMaterialType GetReadingMaterial();
69
70   DBus::ValueOrError< bool > DoGesture( int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint32_t );
71
72 private:
73   Dali::Accessibility::Accessible* CalculateNeighbor( Dali::Accessibility::Accessible* root, Dali::Accessibility::Accessible* start, unsigned char forward, GetNeighborSearchMode search_mode );
74   std::vector< Dali::Accessibility::Accessible* > ValidChildrenGet( const std::vector< Dali::Accessibility::Accessible* >& children, Dali::Accessibility::Accessible* start, Dali::Accessibility::Accessible* root );
75   Dali::Accessibility::Accessible* GetCurrentlyHighlighted();
76   Dali::Accessibility::Accessible* DirectionalDepthFirstSearchTryNonDefunctSibling( bool& all_children_visited, Dali::Accessibility::Accessible* node, Dali::Accessibility::Accessible* start, Dali::Accessibility::Accessible* root, unsigned char forward );
77   Dali::Accessibility::Accessible* GetNextNonDefunctSibling( Dali::Accessibility::Accessible* obj, Dali::Accessibility::Accessible* start, Dali::Accessibility::Accessible* root, unsigned char forward );
78 };
79
80 #endif