2 * Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 namespace ElmSharp.Accessible
20 /// IAccessibleObject is a interface which defines properties and methods of accessible object.
22 public interface IAccessibleObject
25 /// Gets or sets the reading information types of an accessible object.
27 ReadingInfoType ReadingInfoType { get; set; }
30 /// Gets or sets the role of the object in accessibility domain.
32 AccessRole Role { get; set; }
35 /// Gets or sets highlightable of given widget.
37 bool CanHighlight { get; set; }
40 /// Gets or sets the translation domain of "name" and "description" properties.
41 /// Translation domain should be set if application wants to support i18n for accessibily "name" and "description" properties.
42 /// When translation domain is set values of "name" and "description" properties will be translated with dgettext function using current translation domain as "domainname" parameter.
43 /// It is application developer responsibility to ensure that translation files are loaded and binded to translation domain when accessibility is enabled.
45 string TranslationDomain { get; set; }
48 /// Gets or sets an accessible name of the object.
50 string Name { get; set; }
53 /// Gets or sets contextual information about object.
55 string Description { get; set; }
58 /// Gets or sets the delegate for <see cref="IAccessibleObject.Name"/>.
60 AccessibleInfoProvider NameProvider { get; set; }
63 /// Gets or sets the delegate for <see cref = "IAccessibleObject.Description" />.
65 AccessibleInfoProvider DescriptionProvider { get; set; }
68 /// Defines the relationship between two accessible objects.
69 /// Relationships can be queried by Assistive Technology clients to provide customized feedback, improving overall user experience.
70 /// 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.
72 /// <param name="relation">The relationship between source object and target object of a given type.</param>
73 void AppendRelation(IAccessibleRelation relation);
76 /// Removes the relationship between two accessible objects.
78 /// <param name="relation">The relationship between source object and target object of a given type.</param>
79 void RemoveRelation(IAccessibleRelation relation);
82 /// Highlights accessible widget.
87 /// Clears highlight of accessible widget.