From: Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com> Date: Tue, 25 Aug 2020 10:54:56 +0000 (+0200) Subject: Initial accessibility declarations for tray window qml src X-Git-Tag: archive/raspbian/3.16.7-1_deb13u1+rpi1~1^2~12^2~22^2~141^2~7 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=43bf7038062d3575aefa32b73456999114599f51;p=nextcloud-desktop.git Initial accessibility declarations for tray window qml src Signed-off-by: Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com> --- diff --git a/src/gui/tray/UserLine.qml b/src/gui/tray/UserLine.qml index e0171beea..a9b784c07 100644 --- a/src/gui/tray/UserLine.qml +++ b/src/gui/tray/UserLine.qml @@ -11,6 +11,10 @@ MenuItem { id: userLine height: Style.trayWindowHeaderHeight + Accessible.role: Accessible.MenuItem + Accessible.name: qsTr("Account entry") + Accessible.description: qsTr("Menu entry corresponding to a specific account") + RowLayout { id: userLineLayout spacing: 0 @@ -25,6 +29,10 @@ MenuItem { hoverEnabled: true flat: true + Accessible.role: Accessible.Button + Accessible.name: name + Accessible.description: qsTr("Account button, selecting the corresponding account as active when clicked") + MouseArea { anchors.fill: parent hoverEnabled: true @@ -81,6 +89,10 @@ MenuItem { y: accountStateIndicatorBackground.y + 1 sourceSize.width: Style.accountAvatarStateIndicatorSize sourceSize.height: Style.accountAvatarStateIndicatorSize + + Accessible.role: Accessible.Indicator + Accessible.name: isConnected ? qsTr("Connected") : qsTr("Disconnected") + Accessible.description: qsTr("Icon that indicates current connection state for the corresponding account") } } @@ -119,6 +131,13 @@ MenuItem { icon.source: "qrc:///client/theme/more.svg" icon.color: "transparent" + Accessible.role: Accessible.ButtonMenu + Accessible.name: "More" + Accessible.description: qsTr("Menu button providing more account actions when clicked") + Accessible.onPressAction: { + userMoreButtonMenu.popup() + } + MouseArea { id: userMoreButtonMouseArea anchors.fill: parent @@ -167,6 +186,15 @@ MenuItem { color: parent.parent.hovered ? Style.lightHover : "transparent" } } + + Accessible.role: Accessible.Button + Accessible.name: isConnected ? qsTr("Log out") : qsTr("Log in") + Accessible.description: qsTr("Logs user account in or out depending on current connection state") + + onPressed: { + isConnected ? UserModel.logout(index) : UserModel.login(index) + accountMenu.close() + } } MenuItem { @@ -187,6 +215,15 @@ MenuItem { color: parent.parent.hovered ? Style.lightHover : "transparent" } } + + Accessible.role: Accessible.Button + Accessible.name: qsTr("Remove Account") + Accessible.description: qsTr("Permanently removes account from Nextcloud client configuration") + + Accessible.onPressAction: { + UserModel.removeAccount(index) + accountMenu.close() + } } } } diff --git a/src/gui/tray/Window.qml b/src/gui/tray/Window.qml index 0ac120e16..96985b4ad 100644 --- a/src/gui/tray/Window.qml +++ b/src/gui/tray/Window.qml @@ -21,6 +21,9 @@ Window { readonly property int maxMenuHeight: Style.trayWindowHeight - Style.trayWindowHeaderHeight - 2 * Style.trayWindowBorderWidth + Accessible.role: Accessible.Window + Accessible.name: "Nextcloud client tray window" + // Close tray window when focus is lost (e.g. click somewhere else on the screen) onActiveChanged: { if(!active) { @@ -131,6 +134,14 @@ Window { display: AbstractButton.IconOnly flat: true + Accessible.role: Accessible.ButtonMenu + Accessible.name: "Current account" + Accessible.description: "Shows the currently selected account and opens a dropdown list for all accounts when clicked" + Accessible.onPressAction: { + syncPauseButton.text = Systray.syncIsPaused() ? qsTr("Resume sync for all") : qsTr("Pause sync for all") + accountMenu.open() + } + MouseArea { id: accountBtnMouseArea @@ -171,6 +182,10 @@ Window { radius: Style.currentAccountButtonRadius } + Accessible.role: PopupMenu + Accessible.name: qsTr("Account menu") + Accessible.description: qsTr("Popup menu showing a list of accounts and general client actions") + onClosed: { // HACK: reload account Instantiator immediately by restting it - could be done better I guess // see also onVisibleChanged above @@ -249,6 +264,13 @@ Window { color: parent.parent.hovered ? Style.lightHover : "transparent" } } + + Accessible.role: Accessible.MenuItem + Accessible.name: Systray.syncIsPaused() ? qsTr("Resume sync for all") : qsTr("Pause sync for all") + Accessible.description: qsTr("Button that pause or resumes sync activity") + Accessible.onPressAction: { + Systray.pauseResumeSync() + } } MenuItem { @@ -266,6 +288,13 @@ Window { color: parent.parent.hovered ? Style.lightHover : "transparent" } } + + Accessible.role: Accessible.MenuItem + Accessible.name: text + Accessible.description: qsTr("Button that opens the client settings window") + Accessible.onPressAction: { + Systray.openSettings() + } } MenuItem { @@ -283,6 +312,13 @@ Window { color: parent.parent.hovered ? Style.lightHover : "transparent" } } + + Accessible.role: Accessible.MenuItem + Accessible.name: text + Accessible.description: qsTr("Quits the nextcloud client application") + Accessible.onPressAction: { + Systray.shutdown() + } } } } @@ -298,6 +334,7 @@ Window { height: Style.trayWindowHeaderHeight width: Style.currentAccountButtonWidth spacing: 0 + Image { id: currentAccountAvatar @@ -308,6 +345,9 @@ Window { Layout.preferredHeight: Style.accountAvatarSize Layout.preferredWidth: Style.accountAvatarSize + Accessible.role: Accessible.Graphic + Accessible.name: qsTr("Current user avatar") + Rectangle { id: currentAccountStateIndicatorBackground width: Style.accountAvatarStateIndicatorSize + 2 @@ -326,6 +366,10 @@ Window { y: currentAccountStateIndicatorBackground.y + 1 sourceSize.width: Style.accountAvatarStateIndicatorSize sourceSize.height: Style.accountAvatarStateIndicatorSize + + Accessible.role: Accessible.Indicator + Accessible.name: UserModel.isUserConnected(UserModel.currentUserId()) ? qsTr("Connected") : qsTr("Disconnected") + Accessible.description: qsTr("Icon that indicates connection state for the currently selected account") } } @@ -377,6 +421,13 @@ Window { visible: UserModel.currentUser.hasLocalFolder icon.source: "qrc:///client/theme/white/folder.svg" onClicked: UserModel.openCurrentAccountLocalFolder() + + Accessible.role: Accessible.Button + Accessible.name: qsTr("Local folder button") + Accessible.description: qsTr("Opens the local folder corresponding to the currently selected account") + Accessible.onPressAction: { + UserModel.openCurrentAccountLocalFolder() + } } HeaderButton { @@ -385,6 +436,13 @@ Window { visible: UserModel.currentUser.serverHasTalk icon.source: "qrc:///client/theme/white/talk-app.svg" onClicked: UserModel.openCurrentAccountTalk() + + Accessible.role: Accessible.Button + Accessible.name: qsTr("Open Nextcloud Talk") + Accessible.description: qsTr("Opens Nextcloud Talk corresponding the currently sdelected users server in a new browser window") + Accessible.onPressAction: { + UserModel.openCurrentAccountTalk() + } } HeaderButton { @@ -400,6 +458,14 @@ Window { } } + Accessible.role: Accessible.ButtonMenu + Accessible.name: qsTr("Show other apps") + Accessible.description: qsTr("Opens a popup menu with all other supported Nextcloud apps from the currently selected users server") + Accessible.onPressAction: { + appsMenu.open(); + UserModel.openCurrentAccountServer(); + } + Menu { id: appsMenu y: (trayWindowAppsButton.y + trayWindowAppsButton.height + 2) @@ -413,6 +479,9 @@ Window { radius: 2 } + Accessible.role: Accessible.PopupMenu + Accessible.name: qsTr("Apps menu") + Instantiator { id: appsMenuInstantiator model: UserAppsModel @@ -437,6 +506,13 @@ Window { color: appEntry.hovered ? Style.lightHover : "transparent" } } + + Accessible.role: Accessible.MenuItem + Accessible.name: appName + Accessible.description: qsTr("Opens the corresponding Nextcloud app in a new browser window") + Accessible.onPressAction: { + UserAppsModel.openAppUrl(appUrl) + } } } } @@ -456,6 +532,10 @@ Window { id: listViewScrollbar } + Accessible.role: Accessible.List + Accessible.name: qsTr("Activity list") + Accessible.description: qsTr("A list of activities for the currently selected user account") + model: activityModel delegate: RowLayout { @@ -465,6 +545,17 @@ Window { height: Style.trayWindowHeaderHeight spacing: 0 + Accessible.role: Accessible.ListItem + Accessible.name: activityTextColumn.text + Accessible.description: qsTr("Activity item - if applicable opens local folder containing the corresponding sync object when clicked") + Accessible.onPressAction: { + if (path !== "") { + Qt.openUrlExternally(path) + } else { + Qt.openUrlExternally(link) + } + } + MouseArea { id: activityMouseArea enabled: (path !== "" || link !== "") @@ -474,11 +565,7 @@ Window { anchors.margins: 2 hoverEnabled: true onClicked: { - if (path !== "") { - Qt.openUrlExternally(path) - } else { - Qt.openUrlExternally(link) - } + } Rectangle { @@ -573,6 +660,13 @@ Window { ToolTip.delay: 1000 ToolTip.text: qsTr("Open share dialog") onClicked: Systray.openShareDialog(displayPath,absolutePath) + + Accessible.role: Accessible.Button + Accessible.name: qsTr("Share button") + Accessible.description: qsTr("Opens share window for the corresponding sync object") + Accessible.onPressAction: { + Systray.openShareDialog(displayPath,absolutePath) + } } }