mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-13 00:04:19 +00:00
119 lines
3.5 KiB
C++
119 lines
3.5 KiB
C++
/*
|
|
==============================================================================
|
|
|
|
This file is part of the JUCE library.
|
|
Copyright (c) 2022 - Raw Material Software Limited
|
|
|
|
JUCE is an open source library subject to commercial or open-source
|
|
licensing.
|
|
|
|
By using JUCE, you agree to the terms of both the JUCE 7 End-User License
|
|
Agreement and JUCE Privacy Policy.
|
|
|
|
End User License Agreement: www.juce.com/juce-7-licence
|
|
Privacy Policy: www.juce.com/juce-privacy-policy
|
|
|
|
Or: You may also use this code under the terms of the GPL v3 (see
|
|
www.gnu.org/licenses).
|
|
|
|
JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
|
|
EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
|
|
DISCLAIMED.
|
|
|
|
==============================================================================
|
|
*/
|
|
|
|
namespace juce
|
|
{
|
|
|
|
/** An action that can be performed by an accessible UI element.
|
|
|
|
@tags{Accessibility}
|
|
*/
|
|
enum class AccessibilityActionType
|
|
{
|
|
/** Represents a "press" action.
|
|
|
|
This will be called when the user "clicks" the UI element using an
|
|
accessibility client.
|
|
*/
|
|
press,
|
|
|
|
/** Represents a "toggle" action.
|
|
|
|
This will be called when the user toggles the state of a UI element,
|
|
for example a toggle button or the selection of a list item.
|
|
*/
|
|
toggle,
|
|
|
|
/** Indicates that the UI element has received focus.
|
|
|
|
This will be called when a UI element receives focus from an accessibility
|
|
client, or keyboard focus from the application.
|
|
*/
|
|
focus,
|
|
|
|
/** Represents the user showing a contextual menu for a UI element.
|
|
|
|
This will be called for UI elements which expand and collapse to
|
|
show contextual information or menus, or show a popup.
|
|
*/
|
|
showMenu
|
|
};
|
|
|
|
/** A simple wrapper for building a collection of supported accessibility actions
|
|
and corresponding callbacks for a UI element.
|
|
|
|
Pass one of these when constructing an `AccessibilityHandler` to enable users
|
|
to interact with a UI element via the supported actions.
|
|
|
|
@tags{Accessibility}
|
|
*/
|
|
class JUCE_API AccessibilityActions
|
|
{
|
|
public:
|
|
/** Constructor.
|
|
|
|
Creates a default AccessibilityActions object with no action callbacks.
|
|
*/
|
|
AccessibilityActions() = default;
|
|
|
|
/** Adds an action.
|
|
|
|
When the user performs this action with an accessibility client
|
|
`actionCallback` will be called.
|
|
|
|
Returns a reference to itself so that several calls can be chained.
|
|
*/
|
|
AccessibilityActions& addAction (AccessibilityActionType type,
|
|
std::function<void()> actionCallback)
|
|
{
|
|
actionMap[type] = std::move (actionCallback);
|
|
return *this;
|
|
}
|
|
|
|
/** Returns true if the specified action is supported. */
|
|
bool contains (AccessibilityActionType type) const
|
|
{
|
|
return actionMap.find (type) != actionMap.end();
|
|
}
|
|
|
|
/** If an action has been registered for the provided action type, invokes the
|
|
action and returns true. Otherwise, returns false.
|
|
*/
|
|
bool invoke (AccessibilityActionType type) const
|
|
{
|
|
auto iter = actionMap.find (type);
|
|
|
|
if (iter == actionMap.end())
|
|
return false;
|
|
|
|
iter->second();
|
|
return true;
|
|
}
|
|
|
|
private:
|
|
std::map<AccessibilityActionType, std::function<void()>> actionMap;
|
|
};
|
|
|
|
} // namespace juce
|