Initial accessibility declarations for tray window qml src
authorDominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com>
Tue, 25 Aug 2020 10:54:56 +0000 (12:54 +0200)
committerKevin Ottens (Rebase PR Action) <er-vin@users.noreply.github.com>
Mon, 28 Sep 2020 12:38:21 +0000 (12:38 +0000)
Signed-off-by: Dominique Fuchs <32204802+DominiqueFuchs@users.noreply.github.com>
src/gui/tray/UserLine.qml
src/gui/tray/Window.qml

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