915bf7ca0a8bc8c8a38eb3cb1aeeeb5ee9d67b3b
[platform/core/csapi/tizenfx.git] / src / ElmSharp / ElmSharp / IAccessibleObject.cs
1 /*
2  * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Licensed under the Apache License, Version 2.0 (the License);
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an AS IS BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 namespace ElmSharp.Accessible
18 {
19     /// <summary>
20     /// IAccessibleObject is an interface, which defines the properties and methods of an accessible object.
21     /// </summary>
22     /// <since_tizen> preview </since_tizen>
23     public interface IAccessibleObject
24     {
25         /// <summary>
26         /// Gets or sets the reading information types of an accessible object.
27         /// </summary>
28         /// <since_tizen> preview </since_tizen>
29         ReadingInfoType ReadingInfoType { get; set; }
30
31         /// <summary>
32         /// Gets or sets the role of the object in an accessibility domain.
33         /// </summary>
34         /// <since_tizen> preview </since_tizen>
35         AccessRole Role { get; set; }
36
37         /// <summary>
38         /// Gets or sets the highlightable of the given widget.
39         /// </summary>
40         /// <since_tizen> preview </since_tizen>
41         bool CanHighlight { get; set; }
42
43         /// <summary>
44         /// Gets or sets the translation domain of the "name" and "description" properties.
45         /// Translation domain should be set if the application wants to support i18n for accessing the "name" and "description" properties.
46         /// When the translation domain is set, values of the "name" and "description" properties will be translated with dgettext function using the current translation domain as "domainname" parameter.
47         /// It is the application developer's responsibility to ensure that translation files are loaded and binded to the translation domain when accessibility is enabled.
48         /// </summary>
49         /// <since_tizen> preview </since_tizen>
50         string TranslationDomain { get; set; }
51
52         /// <summary>
53         /// Gets or sets an accessible name of the object.
54         /// </summary>
55         /// <since_tizen> preview </since_tizen>
56         string Name { get; set; }
57
58         /// <summary>
59         /// Gets or sets contextual information about the object.
60         /// </summary>
61         /// <since_tizen> preview </since_tizen>
62         string Description { get; set; }
63
64         /// <summary>
65         /// Gets or sets the delegate for <see cref="IAccessibleObject.Name"/>.
66         /// </summary>
67         /// <since_tizen> preview </since_tizen>
68         AccessibleInfoProvider NameProvider { get; set; }
69
70         /// <summary>
71         /// Gets or sets the delegate for <see cref="IAccessibleObject.Description"/>.
72         /// </summary>
73         /// <since_tizen> preview </since_tizen>
74         AccessibleInfoProvider DescriptionProvider { get; set; }
75
76         /// <summary>
77         /// Defines the relationship between two accessible objects.
78         /// Relationships can be queried by Assistive Technology clients to provide customized feedback, improving overall user experience.
79         /// AppendRelation API is asymmetric, which means that appending (For example, relation <see cref="FlowsTo"/> from object A to B) do not append relation <see cref="FlowsFrom"/> from object B to object A.
80         /// </summary>
81         /// <param name="relation">The relationship between the source object and target object of a given type.</param>
82         /// <since_tizen> preview </since_tizen>
83         void AppendRelation(IAccessibleRelation relation);
84
85         /// <summary>
86         /// Removes the relationship between two accessible objects.
87         /// </summary>
88         /// <param name="relation">The relationship between the source object and target object of a given type.</param>
89         /// <since_tizen> preview </since_tizen>
90         void RemoveRelation(IAccessibleRelation relation);
91
92         /// <summary>
93         /// Highlights the accessible widget.
94         /// </summary>
95         /// <since_tizen> preview </since_tizen>
96         void Highlight();
97
98         /// <summary>
99         /// Clears the highlight of the accessible widget.
100         /// </summary>
101         /// <since_tizen> preview </since_tizen>
102         void Unhighlight();
103     }
104 }