From 2f93b7f76429f0d302c59e8ce4feeb39b651ae9d Mon Sep 17 00:00:00 2001 From: Frederik Gladhorn Date: Mon, 7 Jul 2014 19:20:57 +0200 Subject: [PATCH] Add Accessibility properties Also clean up increase and decrease actions for Slider a tiny bit. --- .../plasmacomponents/qml/Button.qml | 9 ++++ .../plasmacomponents/qml/CommonDialog.qml | 2 + .../plasmacomponents/qml/Label.qml | 3 ++ .../plasmacomponents/qml/ListItem.qml | 2 + .../plasmacomponents/qml/ModelContextMenu.qml | 1 + .../plasmacomponents/qml/ProgressBar.qml | 2 + .../plasmacomponents/qml/RadioButton.qml | 1 + .../plasmacomponents/qml/ScrollBar.qml | 1 + .../plasmacomponents/qml/SectionScroller.qml | 1 + .../plasmacomponents/qml/Slider.qml | 42 ++++++------------- .../plasmacomponents/qml/Switch.qml | 1 + .../plasmacomponents/qml/TabBar.qml | 2 + .../plasmacomponents/qml/TabButton.qml | 5 +++ .../plasmacomponents/qml/TextArea.qml | 3 ++ .../plasmacomponents/qml/TextField.qml | 6 +++ .../plasmacomponents/qml/ToolBar.qml | 2 + .../plasmacomponents/qml/ToolButton.qml | 7 ++++ .../qml/private/DualStateButton.qml | 9 +++- 18 files changed, 68 insertions(+), 31 deletions(-) diff --git a/src/declarativeimports/plasmacomponents/qml/Button.qml b/src/declarativeimports/plasmacomponents/qml/Button.qml index 186a39a8c..262e20fd0 100644 --- a/src/declarativeimports/plasmacomponents/qml/Button.qml +++ b/src/declarativeimports/plasmacomponents/qml/Button.qml @@ -278,4 +278,13 @@ Item { onTriggered: Tooltip.showText(mouse, Qt.point(mouse.mouseX, mouse.mouseY), tooltip) } } + + Accessible.role: Accessible.Button + Accessible.name: text + Accessible.description: tooltip + Accessible.checkable: checkable + Accessible.checked: checked + function accessiblePressAction() { + internal.clickButton() + } } diff --git a/src/declarativeimports/plasmacomponents/qml/CommonDialog.qml b/src/declarativeimports/plasmacomponents/qml/CommonDialog.qml index 75f0362e1..3a64fa00b 100644 --- a/src/declarativeimports/plasmacomponents/qml/CommonDialog.qml +++ b/src/declarativeimports/plasmacomponents/qml/CommonDialog.qml @@ -70,6 +70,8 @@ PlasmaComponents.Dialog { */ signal buttonClicked(int index) + Accessible.role: Accessible.Dialog + onButtonTextsChanged: { print("btex6tchanged:" + buttonTexts); for (var i = buttonRow.children.length; i > 0; --i) { diff --git a/src/declarativeimports/plasmacomponents/qml/Label.qml b/src/declarativeimports/plasmacomponents/qml/Label.qml index 033c41cb6..8e2531188 100644 --- a/src/declarativeimports/plasmacomponents/qml/Label.qml +++ b/src/declarativeimports/plasmacomponents/qml/Label.qml @@ -51,4 +51,7 @@ Text { color: theme.textColor opacity: enabled? 1 : 0.6 + + Accessible.role: Accessible.StaticText + Accessible.name: text } diff --git a/src/declarativeimports/plasmacomponents/qml/ListItem.qml b/src/declarativeimports/plasmacomponents/qml/ListItem.qml index 4e6d5e7d0..f4a72cc50 100644 --- a/src/declarativeimports/plasmacomponents/qml/ListItem.qml +++ b/src/declarativeimports/plasmacomponents/qml/ListItem.qml @@ -137,4 +137,6 @@ Item { } } } + + Accessible.role: Accessible.ListItem } diff --git a/src/declarativeimports/plasmacomponents/qml/ModelContextMenu.qml b/src/declarativeimports/plasmacomponents/qml/ModelContextMenu.qml index 74d81d181..402d464e1 100644 --- a/src/declarativeimports/plasmacomponents/qml/ModelContextMenu.qml +++ b/src/declarativeimports/plasmacomponents/qml/ModelContextMenu.qml @@ -80,4 +80,5 @@ PlasmaComponents.ContextMenu { } } } + Accessible.role: Accessible.PopupMenu } diff --git a/src/declarativeimports/plasmacomponents/qml/ProgressBar.qml b/src/declarativeimports/plasmacomponents/qml/ProgressBar.qml index b85c100f3..1a8f3952e 100644 --- a/src/declarativeimports/plasmacomponents/qml/ProgressBar.qml +++ b/src/declarativeimports/plasmacomponents/qml/ProgressBar.qml @@ -136,4 +136,6 @@ Item { to: background._isVertical ? background.height - bar.height : background.width - bar.width } } + + Accessible.role: Accessible.ProgressBar } diff --git a/src/declarativeimports/plasmacomponents/qml/RadioButton.qml b/src/declarativeimports/plasmacomponents/qml/RadioButton.qml index 769682bca..ae534d3e2 100644 --- a/src/declarativeimports/plasmacomponents/qml/RadioButton.qml +++ b/src/declarativeimports/plasmacomponents/qml/RadioButton.qml @@ -63,4 +63,5 @@ Private.DualStateButton { activeFocusOnTab: true shadow: Private.RoundShadow {} + Accessible.role: Accessible.RadioButton } diff --git a/src/declarativeimports/plasmacomponents/qml/ScrollBar.qml b/src/declarativeimports/plasmacomponents/qml/ScrollBar.qml index 6b6f9ddae..986e439ff 100644 --- a/src/declarativeimports/plasmacomponents/qml/ScrollBar.qml +++ b/src/declarativeimports/plasmacomponents/qml/ScrollBar.qml @@ -215,4 +215,5 @@ Item { source: interactive ? "private/ScrollBarDelegate.qml" : "private/ScrollDecoratorDelegate.qml" } + Accessible.role: Accessible.ScrollBar } diff --git a/src/declarativeimports/plasmacomponents/qml/SectionScroller.qml b/src/declarativeimports/plasmacomponents/qml/SectionScroller.qml index 9c6cc2e2b..9e65e08d3 100644 --- a/src/declarativeimports/plasmacomponents/qml/SectionScroller.qml +++ b/src/declarativeimports/plasmacomponents/qml/SectionScroller.qml @@ -179,4 +179,5 @@ Item { listView.model.itemsRemoved.connect(dirtyObserver); } } + Accessible.role: Accessible.ScrollBar } diff --git a/src/declarativeimports/plasmacomponents/qml/Slider.qml b/src/declarativeimports/plasmacomponents/qml/Slider.qml index 8441eb57f..e111cdab5 100644 --- a/src/declarativeimports/plasmacomponents/qml/Slider.qml +++ b/src/declarativeimports/plasmacomponents/qml/Slider.qml @@ -112,43 +112,24 @@ Item { activeFocusOnTab: true - Keys.onUpPressed: { - if (!enabled || !contents.isVertical) + Keys.onUpPressed: { if (contents.isVertical) decrease() } + Keys.onDownPressed: { if (contents.isVertical) increase() } + Keys.onLeftPressed: { if (!contents.isVertical) increase() } + Keys.onRightPressed: { if (!contents.isVertical) decrease() } + function accessibleIncreaseAction() { increase() } + function accessibleDecreaseAction() { decrease() } + + function increase() { + if (!enabled) return; - - if (inverted) - value -= stepSize; - else - value += stepSize; - } - - Keys.onDownPressed: { - if (!enabled || !enabled) - return; - - if (!contents.isVertical) - return; - if (inverted) value += stepSize; else value -= stepSize; } - - Keys.onLeftPressed: { - if (!enabled || contents.isVertical) + function decrease() { + if (!enabled) return; - - if (inverted) - value += stepSize; - else - value -= stepSize; - } - - Keys.onRightPressed: { - if (!enabled || contents.isVertical) - return; - if (inverted) value -= stepSize; else @@ -327,4 +308,5 @@ Item { property: "x" value: range.position } + Accessible.role: Accessible.Slider } diff --git a/src/declarativeimports/plasmacomponents/qml/Switch.qml b/src/declarativeimports/plasmacomponents/qml/Switch.qml index 60f179da7..e61fa3c0d 100644 --- a/src/declarativeimports/plasmacomponents/qml/Switch.qml +++ b/src/declarativeimports/plasmacomponents/qml/Switch.qml @@ -63,4 +63,5 @@ Private.DualStateButton { } shadow: Private.ButtonShadow {} + Accessible.role: Accessible.CheckBox } diff --git a/src/declarativeimports/plasmacomponents/qml/TabBar.qml b/src/declarativeimports/plasmacomponents/qml/TabBar.qml index 809318aeb..3edd4c843 100644 --- a/src/declarativeimports/plasmacomponents/qml/TabBar.qml +++ b/src/declarativeimports/plasmacomponents/qml/TabBar.qml @@ -82,6 +82,8 @@ FocusScope { implicitWidth: layout.implicitWidth implicitHeight: layout.implicitHeight + Accessible.role: Accessible.PageTabList + Item { id: buttonCutter anchors { diff --git a/src/declarativeimports/plasmacomponents/qml/TabButton.qml b/src/declarativeimports/plasmacomponents/qml/TabButton.qml index 21302ef1c..3607b2775 100644 --- a/src/declarativeimports/plasmacomponents/qml/TabButton.qml +++ b/src/declarativeimports/plasmacomponents/qml/TabButton.qml @@ -87,6 +87,11 @@ Item { */ signal clicked + Accessible.role: Accessible.PageTab + Accessible.checkable: true + Accessible.checked: checked + Accessible.name: text + implicitWidth: Math.max(label.implicitWidth + (internal.portrait ? 0 : (iconSource != null ? units.iconSizes.small : 0)), height) implicitHeight: 20//label.implicitHeight + (internal.portrait ? (iconSource != null ? units.iconSizes.small : 0) : 0) diff --git a/src/declarativeimports/plasmacomponents/qml/TextArea.qml b/src/declarativeimports/plasmacomponents/qml/TextArea.qml index 0ca6fe518..af148b587 100644 --- a/src/declarativeimports/plasmacomponents/qml/TextArea.qml +++ b/src/declarativeimports/plasmacomponents/qml/TextArea.qml @@ -437,4 +437,7 @@ Item { orientation: Qt.Vertical stepSize: textEdit.font.pixelSize } + + Accessible.role: EditableText + Accessible.readOnly: readOnly } diff --git a/src/declarativeimports/plasmacomponents/qml/TextField.qml b/src/declarativeimports/plasmacomponents/qml/TextField.qml index d67dda359..44881edc3 100644 --- a/src/declarativeimports/plasmacomponents/qml/TextField.qml +++ b/src/declarativeimports/plasmacomponents/qml/TextField.qml @@ -384,4 +384,10 @@ FocusScope { } } } + + Accessible.name: text + Accessible.role: EditableText + Accessible.readOnly: readOnly + Accessible.passwordEdit: echoMode == TextInput.Password || echoMode === TextInput.PasswordEchoOnEdit + Accessible.description: placeholderText } diff --git a/src/declarativeimports/plasmacomponents/qml/ToolBar.qml b/src/declarativeimports/plasmacomponents/qml/ToolBar.qml index 91b8f7703..4832577dd 100644 --- a/src/declarativeimports/plasmacomponents/qml/ToolBar.qml +++ b/src/declarativeimports/plasmacomponents/qml/ToolBar.qml @@ -239,4 +239,6 @@ Item{ } } } + + Accessible.role: Accessible.ToolBar } diff --git a/src/declarativeimports/plasmacomponents/qml/ToolButton.qml b/src/declarativeimports/plasmacomponents/qml/ToolButton.qml index 21afc21dc..6dcbf7bb6 100644 --- a/src/declarativeimports/plasmacomponents/qml/ToolButton.qml +++ b/src/declarativeimports/plasmacomponents/qml/ToolButton.qml @@ -434,5 +434,12 @@ Item { onTriggered: Tooltip.showText(mouse, Qt.point(mouse.mouseX, mouse.mouseY), tooltip) } } + + Accessible.role: Accessible.Button + Accessible.name: text + Accessible.description: tooltip + function accessiblePressAction() { + internal.clickButton() + } } diff --git a/src/declarativeimports/plasmacomponents/qml/private/DualStateButton.qml b/src/declarativeimports/plasmacomponents/qml/private/DualStateButton.qml index 8c6919e0e..b55243e86 100644 --- a/src/declarativeimports/plasmacomponents/qml/private/DualStateButton.qml +++ b/src/declarativeimports/plasmacomponents/qml/private/DualStateButton.qml @@ -112,7 +112,14 @@ Item { anchors.fill: parent hoverEnabled: true - onReleased: dualButton.released(); onPressed: dualButton.forceActiveFocus(); + onReleased: dualButton.released(); + } + Accessible.name: text + Accessible.checkable: checkable + Accessible.checked: checked + function accessiblePressAction() { + dualButton.forceActiveFocus() + dualButton.released() } }