From fd3e75e3348f26790b2164240d4c6d09f6645c74 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Sat, 30 Jul 2022 18:03:35 -0400
Subject: [PATCH] accessibility: add autoaccelerator

Turn automatically a button into a button with an automiatic key
accelerator (which is Alt+ first letter of the text)

Change-Id: Idf118673423e8e3125864c67124f194de0220a69
GitLab: #780
---
 src/app/commoncomponents/ConfirmDialog.qml           |  2 ++
 src/app/commoncomponents/DaemonReconnectPopup.qml    |  1 +
 src/app/commoncomponents/DeleteAccountDialog.qml     |  2 ++
 src/app/commoncomponents/MaterialButton.qml          | 12 ++++++++++++
 src/app/commoncomponents/PasswordDialog.qml          |  2 ++
 src/app/commoncomponents/SimpleMessageDialog.qml     |  1 +
 src/app/mainview/components/FilesToSendDelegate.qml  |  2 +-
 src/app/mainview/components/NewSwarmPage.qml         |  1 +
 src/app/mainview/components/ReadOnlyFooter.qml       |  2 ++
 src/app/mainview/components/SelectScreen.qml         |  2 ++
 src/app/settingsview/components/LinkDeviceDialog.qml |  2 ++
 src/app/settingsview/components/LogsView.qml         |  3 +++
 .../components/RevokeDevicePasswordDialog.qml        |  4 +++-
 src/app/settingsview/components/UpdateSettings.qml   |  2 ++
 src/app/wizardview/components/BackupKeyPage.qml      |  2 ++
 15 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/src/app/commoncomponents/ConfirmDialog.qml b/src/app/commoncomponents/ConfirmDialog.qml
index 28d5eb7b1..ba5705728 100644
--- a/src/app/commoncomponents/ConfirmDialog.qml
+++ b/src/app/commoncomponents/ConfirmDialog.qml
@@ -74,6 +74,7 @@ BaseModalDialog {
                 hoveredColor: JamiTheme.buttonTintedRedHovered
                 pressedColor: JamiTheme.buttonTintedRedPressed
                 secondary: true
+                autoAccelerator: true
 
                 onClicked: {
                     close()
@@ -93,6 +94,7 @@ BaseModalDialog {
                 hoveredColor: JamiTheme.buttonTintedBlackHovered
                 pressedColor: JamiTheme.buttonTintedBlackPressed
                 secondary: true
+                autoAccelerator: true
 
                 text: JamiStrings.optionCancel
 
diff --git a/src/app/commoncomponents/DaemonReconnectPopup.qml b/src/app/commoncomponents/DaemonReconnectPopup.qml
index bbe5d860a..1bbdcc6df 100644
--- a/src/app/commoncomponents/DaemonReconnectPopup.qml
+++ b/src/app/commoncomponents/DaemonReconnectPopup.qml
@@ -92,6 +92,7 @@ BaseModalDialog {
             hoveredColor: JamiTheme.buttonTintedBlueHovered
             pressedColor: JamiTheme.buttonTintedBluePressed
             secondary: true
+                autoAccelerator: true
 
             onClicked: Qt.quit()
         }
diff --git a/src/app/commoncomponents/DeleteAccountDialog.qml b/src/app/commoncomponents/DeleteAccountDialog.qml
index e47a5ea21..faa875dca 100644
--- a/src/app/commoncomponents/DeleteAccountDialog.qml
+++ b/src/app/commoncomponents/DeleteAccountDialog.qml
@@ -134,6 +134,7 @@ BaseModalDialog {
                 hoveredColor: JamiTheme.buttonTintedRedHovered
                 pressedColor: JamiTheme.buttonTintedRedPressed
                 secondary: true
+                autoAccelerator: true
 
                 text: JamiStrings.optionDelete
 
@@ -175,6 +176,7 @@ BaseModalDialog {
                 secondary: true
 
                 text: JamiStrings.optionCancel
+                autoAccelerator: true
 
                 onClicked: close()
             }
diff --git a/src/app/commoncomponents/MaterialButton.qml b/src/app/commoncomponents/MaterialButton.qml
index 79a9ca515..402ce2aab 100644
--- a/src/app/commoncomponents/MaterialButton.qml
+++ b/src/app/commoncomponents/MaterialButton.qml
@@ -28,6 +28,7 @@ import net.jami.Constants 1.1
 AbstractButton {
     id: root
 
+    property bool autoAccelerator: false
     property bool boldFont: false
     property bool primary: false
     property bool secondary: false
@@ -242,4 +243,15 @@ AbstractButton {
         cursorShape: root.hovered ? Qt.PointingHandCursor : Qt.ArrowCursor
     }
 
+    Shortcut {
+        enabled: text.length > 0 && parent.visible && autoAccelerator
+        sequence: {
+            if (text.length === 0)
+                return ""
+            return "Alt+" + text[0]
+        }
+        context: Qt.ApplicationShortcut
+        onActivated: clicked()
+    }
+
 }
diff --git a/src/app/commoncomponents/PasswordDialog.qml b/src/app/commoncomponents/PasswordDialog.qml
index b5b8392eb..44d2bea3a 100644
--- a/src/app/commoncomponents/PasswordDialog.qml
+++ b/src/app/commoncomponents/PasswordDialog.qml
@@ -187,6 +187,7 @@ BaseModalDialog {
                 hoveredColor: JamiTheme.buttonTintedBlackHovered
                 pressedColor: JamiTheme.buttonTintedBlackPressed
                 secondary: true
+                autoAccelerator: true
                 enabled: purpose === PasswordDialog.SetPassword
 
                 text: (purpose === PasswordDialog.ExportAccount) ? JamiStrings.exportAccount :
@@ -209,6 +210,7 @@ BaseModalDialog {
                 hoveredColor: JamiTheme.buttonTintedBlackHovered
                 pressedColor: JamiTheme.buttonTintedBlackPressed
                 secondary: true
+                autoAccelerator: true
 
                 text: JamiStrings.optionCancel
 
diff --git a/src/app/commoncomponents/SimpleMessageDialog.qml b/src/app/commoncomponents/SimpleMessageDialog.qml
index 55467e06b..be2fb0aba 100644
--- a/src/app/commoncomponents/SimpleMessageDialog.qml
+++ b/src/app/commoncomponents/SimpleMessageDialog.qml
@@ -122,6 +122,7 @@ BaseModalDialog {
                         }
                     }
                     secondary: true
+                    autoAccelerator: true
 
                     text: buttonTitles[modelData]
 
diff --git a/src/app/mainview/components/FilesToSendDelegate.qml b/src/app/mainview/components/FilesToSendDelegate.qml
index 426bad560..7f7fa950a 100644
--- a/src/app/mainview/components/FilesToSendDelegate.qml
+++ b/src/app/mainview/components/FilesToSendDelegate.qml
@@ -130,7 +130,7 @@ Rectangle {
         radius: margin
         preferredSize: JamiTheme.filesToSendDelegateButtonSize
 
-        toolTipText: JamiStrings.remove
+        toolTipText: JamiStrings.optionRemove
 
         source: JamiResources.cross_black_24dp_svg
 
diff --git a/src/app/mainview/components/NewSwarmPage.qml b/src/app/mainview/components/NewSwarmPage.qml
index 50cb0a553..1a00870c4 100644
--- a/src/app/mainview/components/NewSwarmPage.qml
+++ b/src/app/mainview/components/NewSwarmPage.qml
@@ -191,6 +191,7 @@ Rectangle {
 
             Layout.alignment: Qt.AlignCenter
             Layout.topMargin: JamiTheme.preferredMarginSize
+            autoAccelerator: true
 
             preferredWidth: JamiTheme.aboutButtonPreferredWidth
 
diff --git a/src/app/mainview/components/ReadOnlyFooter.qml b/src/app/mainview/components/ReadOnlyFooter.qml
index d0e463eee..e639dfb5e 100644
--- a/src/app/mainview/components/ReadOnlyFooter.qml
+++ b/src/app/mainview/components/ReadOnlyFooter.qml
@@ -60,6 +60,7 @@ Control {
 
             MaterialButton {
                 text: JamiStrings.removeContact
+                autoAccelerator: true
                 font.pointSize: JamiTheme.textFontSize + 2
                 onClicked: MessagesAdapter.removeContact(
                                LRCInstance.selectedConvUid)
@@ -67,6 +68,7 @@ Control {
 
             MaterialButton {
                 text: JamiStrings.newConversation
+                autoAccelerator: true
                 font.pointSize: JamiTheme.textFontSize + 2
                 onClicked: ConversationsAdapter.restartConversation(
                                LRCInstance.selectedConvUid)
diff --git a/src/app/mainview/components/SelectScreen.qml b/src/app/mainview/components/SelectScreen.qml
index 10d876e0c..ce109c0f0 100644
--- a/src/app/mainview/components/SelectScreen.qml
+++ b/src/app/mainview/components/SelectScreen.qml
@@ -369,6 +369,7 @@ Window {
             hoveredColor: JamiTheme.buttonTintedBlackHovered
             pressedColor: JamiTheme.buttonTintedBlackPressed
             secondary: true
+            autoAccelerator: true
 
             text: window ? JamiStrings.shareWindow : JamiStrings.shareScreen
 
@@ -398,6 +399,7 @@ Window {
             hoveredColor: JamiTheme.buttonTintedBlackHovered
             pressedColor: JamiTheme.buttonTintedBlackPressed
             secondary: true
+            autoAccelerator: true
 
             text: JamiStrings.optionCancel
 
diff --git a/src/app/settingsview/components/LinkDeviceDialog.qml b/src/app/settingsview/components/LinkDeviceDialog.qml
index 379cb876e..6b4db3294 100644
--- a/src/app/settingsview/components/LinkDeviceDialog.qml
+++ b/src/app/settingsview/components/LinkDeviceDialog.qml
@@ -170,6 +170,7 @@ BaseModalDialog {
                         hoveredColor: JamiTheme.buttonTintedBlackHovered
                         pressedColor: JamiTheme.buttonTintedBlackPressed
                         secondary: true
+                        autoAccelerator: true
                         enabled: false
 
                         text: JamiStrings.exportAccount
@@ -189,6 +190,7 @@ BaseModalDialog {
                         hoveredColor: JamiTheme.buttonTintedBlackHovered
                         pressedColor: JamiTheme.buttonTintedBlackPressed
                         secondary: true
+                        autoAccelerator: true
                         enabled: true
 
                         text: JamiStrings.optionCancel
diff --git a/src/app/settingsview/components/LogsView.qml b/src/app/settingsview/components/LogsView.qml
index 07917ac63..2073f9212 100644
--- a/src/app/settingsview/components/LogsView.qml
+++ b/src/app/settingsview/components/LogsView.qml
@@ -152,6 +152,7 @@ Window {
                     hoveredColor: JamiTheme.buttonTintedBlackHovered
                     pressedColor: JamiTheme.buttonTintedBlackPressed
                     text: JamiStrings.logsViewClear
+                    autoAccelerator: true
 
                     onClicked: {
                         logsText.clear()
@@ -177,6 +178,7 @@ Window {
 
                     secondary: true
                     text: JamiStrings.logsViewCopy
+                    autoAccelerator: true
 
                     onClicked: {
                         logsText.selectAll()
@@ -215,6 +217,7 @@ Window {
                     pressedColor: JamiTheme.buttonTintedBlackPressed
                     text: JamiStrings.logsViewReport
                     secondary: true
+                    autoAccelerator: true
 
                     onClicked: Qt.openUrlExternally(
                                    "https://jami.net/bugs-and-improvements/")
diff --git a/src/app/settingsview/components/RevokeDevicePasswordDialog.qml b/src/app/settingsview/components/RevokeDevicePasswordDialog.qml
index 97dcdf19a..191782876 100644
--- a/src/app/settingsview/components/RevokeDevicePasswordDialog.qml
+++ b/src/app/settingsview/components/RevokeDevicePasswordDialog.qml
@@ -100,9 +100,10 @@ BaseModalDialog {
                 hoveredColor: JamiTheme.buttonTintedBlackHovered
                 pressedColor: JamiTheme.buttonTintedBlackPressed
                 secondary: true
+                autoAccelerator: true
                 enabled: false
 
-                text: JamiStrings.remove
+                text: JamiStrings.optionRemove
 
                 onClicked: {
                     revokeDeviceWithPassword(deviceId, passwordEdit.text)
@@ -122,6 +123,7 @@ BaseModalDialog {
                 hoveredColor: JamiTheme.buttonTintedBlackHovered
                 pressedColor: JamiTheme.buttonTintedBlackPressed
                 secondary: true
+                autoAccelerator: true
                 enabled: true
 
                 text: JamiStrings.optionCancel
diff --git a/src/app/settingsview/components/UpdateSettings.qml b/src/app/settingsview/components/UpdateSettings.qml
index 7e110a5b0..d24c35cf1 100644
--- a/src/app/settingsview/components/UpdateSettings.qml
+++ b/src/app/settingsview/components/UpdateSettings.qml
@@ -76,6 +76,7 @@ ColumnLayout {
         hoveredColor: JamiTheme.buttonTintedBlackHovered
         pressedColor: JamiTheme.buttonTintedBlackPressed
         secondary: true
+        autoAccelerator: true
 
         toolTipText: JamiStrings.checkForUpdates
         text: JamiStrings.checkForUpdates
@@ -97,6 +98,7 @@ ColumnLayout {
         hoveredColor: JamiTheme.buttonTintedBlackHovered
         pressedColor: JamiTheme.buttonTintedBlackPressed
         secondary: true
+        autoAccelerator: true
 
         toolTipText: JamiStrings.betaInstall
         text: JamiStrings.betaInstall
diff --git a/src/app/wizardview/components/BackupKeyPage.qml b/src/app/wizardview/components/BackupKeyPage.qml
index 7eb3344ad..2b62bcd89 100644
--- a/src/app/wizardview/components/BackupKeyPage.qml
+++ b/src/app/wizardview/components/BackupKeyPage.qml
@@ -198,6 +198,7 @@ Rectangle {
             preferredWidth: JamiTheme.wizardButtonWidth
 
             text: JamiStrings.backupAccountBtn
+            autoAccelerator: true
             color: JamiTheme.buttonTintedGrey
             hoveredColor: JamiTheme.buttonTintedGreyHovered
             pressedColor: JamiTheme.buttonTintedGreyPressed
@@ -220,6 +221,7 @@ Rectangle {
             preferredWidth: JamiTheme.wizardButtonWidth
 
             text: JamiStrings.skip
+            autoAccelerator: true
             color: JamiTheme.buttonTintedGrey
             hoveredColor: JamiTheme.buttonTintedGreyHovered
             pressedColor: JamiTheme.buttonTintedGreyPressed
-- 
GitLab