From f40a8215d1823cf6a7b52b38524ae89174bcc818 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Blin?=
 <sebastien.blin@savoirfairelinux.com>
Date: Thu, 25 Jan 2024 10:07:22 -0500
Subject: [PATCH] mainview: fix shortcuts to go to the settings page

Seems broken since a recent Qt upgrade. Calling a method in JamiQmlUtils
works as expected.

Change-Id: Ic1257a4f487560744f5ce1ea02928504ff572157
---
 src/app/constant/JamiQmlUtils.qml |  4 +++
 src/app/mainview/MainView.qml     |  8 ++---
 tests/qml/src/tst_MainView.qml    | 56 +++++++++++++++++++++++++++++++
 3 files changed, 64 insertions(+), 4 deletions(-)
 create mode 100644 tests/qml/src/tst_MainView.qml

diff --git a/src/app/constant/JamiQmlUtils.qml b/src/app/constant/JamiQmlUtils.qml
index 6aa09d739..28f16f8bb 100644
--- a/src/app/constant/JamiQmlUtils.qml
+++ b/src/app/constant/JamiQmlUtils.qml
@@ -49,6 +49,10 @@ Item {
 
     signal settingsPageRequested(int index)
 
+    function requestSettingsPage(index) {
+        settingsPageRequested(index);
+    }
+
     function updateMessageBarButtonsPoints() {
         if (messageBarButtonsRowObj && audioRecordMessageButtonObj && videoRecordMessageButtonObj) {
             audioRecordMessageButtonInMainViewPoint = messageBarButtonsRowObj.mapToItem(mainViewRectObj, audioRecordMessageButtonObj.x, audioRecordMessageButtonObj.y);
diff --git a/src/app/mainview/MainView.qml b/src/app/mainview/MainView.qml
index 8ac535798..93ef1380c 100644
--- a/src/app/mainview/MainView.qml
+++ b/src/app/mainview/MainView.qml
@@ -64,7 +64,7 @@ Rectangle {
     Shortcut {
         sequence: "Ctrl+M"
         context: Qt.ApplicationShortcut
-        onActivated: JamiQmlUtils.settingsPageRequested(12)
+        onActivated: JamiQmlUtils.requestSettingsPage(12)
     }
 
     WheelHandler {
@@ -117,19 +117,19 @@ Rectangle {
     Shortcut {
         sequence: "Ctrl+G"
         context: Qt.ApplicationShortcut
-        onActivated: JamiQmlUtils.settingsPageRequested(5)
+        onActivated: JamiQmlUtils.requestSettingsPage(5)
     }
 
     Shortcut {
         sequence: "Ctrl+Alt+I"
         context: Qt.ApplicationShortcut
-        onActivated: JamiQmlUtils.settingsPageRequested(0)
+        onActivated: JamiQmlUtils.requestSettingsPage(0)
     }
 
     Shortcut {
         sequence: "Ctrl+P"
         context: Qt.ApplicationShortcut
-        onActivated: JamiQmlUtils.settingsPageRequested(15)
+        onActivated: JamiQmlUtils.requestSettingsPage(15)
     }
 
     Shortcut {
diff --git a/tests/qml/src/tst_MainView.qml b/tests/qml/src/tst_MainView.qml
new file mode 100644
index 000000000..b28d22c61
--- /dev/null
+++ b/tests/qml/src/tst_MainView.qml
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2024 Savoir-faire Linux Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <https://www.gnu.org/licenses/>.
+ */
+
+import QtQuick
+import QtTest
+
+import net.jami.Adapters 1.1
+import net.jami.Models 1.1
+import net.jami.Constants 1.1
+import net.jami.Enums 1.1
+
+import "../../../src/app/mainview"
+import "../../../src/app/commoncomponents"
+
+MainView {
+    id: uut
+
+    width: 400
+    height: 600
+
+    SignalSpy {
+        id: settingsPageRequestedSpy
+
+        target: JamiQmlUtils
+        signalName: "onSettingsPageRequested"
+    }
+
+    TestCase {
+        name: "Test shortcuts"
+        when: windowShown
+
+        function test_shortcuts() {
+            keyClick(Qt.Key_M, Qt.ControlModifier)
+            settingsPageRequestedSpy.wait(1000)
+            compare(settingsPageRequestedSpy.count, 1)
+            keyClick(Qt.Key_G, Qt.ControlModifier)
+            settingsPageRequestedSpy.wait(1000)
+            compare(settingsPageRequestedSpy.count, 2)
+        }
+    }
+
+}
-- 
GitLab