/*
* Copyright (c) 2016 Samsung Electronics Co., Ltd All Rights Reserved
*
* Licensed under the Apache License, Version 2.0 (the License);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an AS IS BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
namespace ElmSharp.Accessible
{
///
/// IAccessibleObject is an interface, which defines the properties and methods of an accessible object.
///
/// preview
public interface IAccessibleObject
{
///
/// Gets or sets the reading information types of an accessible object.
///
/// preview
ReadingInfoType ReadingInfoType { get; set; }
///
/// Gets or sets the role of the object in an accessibility domain.
///
/// preview
AccessRole Role { get; set; }
///
/// Gets or sets the highlightable of the given widget.
///
/// preview
bool CanHighlight { get; set; }
///
/// Gets or sets the translation domain of the "name" and "description" properties.
/// Translation domain should be set if the application wants to support i18n for accessing the "name" and "description" properties.
/// 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.
/// It is the application developer's responsibility to ensure that translation files are loaded and binded to the translation domain when accessibility is enabled.
///
/// preview
string TranslationDomain { get; set; }
///
/// Gets or sets an accessible name of the object.
///
/// preview
string Name { get; set; }
///
/// Gets or sets contextual information about the object.
///
/// preview
string Description { get; set; }
///
/// Gets or sets the delegate for .
///
/// preview
AccessibleInfoProvider NameProvider { get; set; }
///
/// Gets or sets the delegate for .
///
/// preview
AccessibleInfoProvider DescriptionProvider { get; set; }
///
/// Defines the relationship between two accessible objects.
/// Relationships can be queried by Assistive Technology clients to provide customized feedback, improving overall user experience.
/// AppendRelation API is asymmetric, which means that appending (For example, relation from object A to B) do not append relation from object B to object A.
///
/// The relationship between the source object and target object of a given type.
/// preview
void AppendRelation(IAccessibleRelation relation);
///
/// Removes the relationship between two accessible objects.
///
/// The relationship between the source object and target object of a given type.
/// preview
void RemoveRelation(IAccessibleRelation relation);
///
/// Highlights the accessible widget.
///
/// preview
void Highlight();
///
/// Clears the highlight of the accessible widget.
///
/// preview
void Unhighlight();
}
}