[vlc-devel] [PATCH 2/2] qml: add global shortcuts

Pierre Lamot pierre at videolabs.io
Tue Oct 6 09:31:31 CEST 2020


---
 modules/gui/qt/Makefile.am                    |  1 +
 .../qt/maininterface/qml/MainInterface.qml    |  5 ++
 modules/gui/qt/menus/qml/GlobalShortcuts.qml  | 59 +++++++++++++++++++
 modules/gui/qt/vlc.qrc                        |  1 +
 4 files changed, 66 insertions(+)
 create mode 100644 modules/gui/qt/menus/qml/GlobalShortcuts.qml

diff --git a/modules/gui/qt/Makefile.am b/modules/gui/qt/Makefile.am
index 3fae174717..664889ed71 100644
--- a/modules/gui/qt/Makefile.am
+++ b/modules/gui/qt/Makefile.am
@@ -637,6 +637,7 @@ libqt_plugin_la_QML = \
 	gui/qt/medialibrary/qml/VideoListDisplay.qml \
 	gui/qt/menus/qml/AudioMenu.qml \
 	gui/qt/menus/qml/CheckableModelSubMenu.qml \
+	gui/qt/menus/qml/GlobalShortcuts.qml \
 	gui/qt/menus/qml/HelpMenu.qml \
 	gui/qt/menus/qml/MainDropdownMenu.qml \
 	gui/qt/menus/qml/MainMenubar.qml \
diff --git a/modules/gui/qt/maininterface/qml/MainInterface.qml b/modules/gui/qt/maininterface/qml/MainInterface.qml
index 2e3dd9b8ef..477464eb6f 100644
--- a/modules/gui/qt/maininterface/qml/MainInterface.qml
+++ b/modules/gui/qt/maininterface/qml/MainInterface.qml
@@ -164,6 +164,11 @@ Rectangle {
         }
     }
 
+    Loader {
+        asynchronous: true
+        source: "qrc:///menus/GlobalShortcuts.qml"
+    }
+
     Loader {
         id: dialogsLoader
 
diff --git a/modules/gui/qt/menus/qml/GlobalShortcuts.qml b/modules/gui/qt/menus/qml/GlobalShortcuts.qml
new file mode 100644
index 0000000000..489a4cad97
--- /dev/null
+++ b/modules/gui/qt/menus/qml/GlobalShortcuts.qml
@@ -0,0 +1,59 @@
+/*****************************************************************************
+ * Copyright (C) 2020 VLC authors and VideoLAN
+ *
+ * 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 2 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, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+import QtQuick 2.11
+
+Item {
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+O"; onActivated: dialogProvider.simpleOpenDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+Shift+O"; onActivated: dialogProvider.openFileDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+F"; onActivated: dialogProvider.PLOpenDir(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+D"; onActivated: dialogProvider.openDiscDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+N"; onActivated: dialogProvider.openNetDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+C"; onActivated: dialogProvider.openCaptureDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+V"; onActivated: dialogProvider.openUrlDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+Y"; onActivated: dialogProvider.savePlayingToPlaylist(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+R"; onActivated: dialogProvider.openAndTranscodingDialogs(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+S"; onActivated: dialogProvider.openAndStreamingDialogs(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+Q"; onActivated: dialogProvider.quit(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+E"; onActivated: dialogProvider.extendedDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+I"; onActivated: dialogProvider.mediaInfoDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+J"; onActivated: dialogProvider.mediaCodecDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+M"; onActivated: dialogProvider.messagesDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+P"; onActivated: dialogProvider.prefsDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+B"; onActivated: dialogProvider.bookmarksDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+T"; onActivated: dialogProvider.gotoTimeDialog(); }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"F1";     onActivated: dialogProvider.helpDialog(); }
+
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+Shift+W"; onActivated: dialogProvider.vlmDialog(); enabled: mainInterface.hasVLM; }
+
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"Ctrl+L"; onActivated: mainInterface.playlistVisible = !mainInterface.playlistVisible; }
+    Shortcut{ context: Qt.ApplicationShortcut; sequence:"F11"; onActivated: mainInterface.toggleInterfaceFullScreen(); }
+
+    Repeater {
+        model: recentsMedias
+
+        Item {
+            Shortcut {
+                sequence: "Ctrl+" + (index + 1)
+                onActivated:  mainPlaylistController.append([mrl], true)
+                context: Qt.ApplicationShortcut
+            }
+        }
+    }
+
+}
diff --git a/modules/gui/qt/vlc.qrc b/modules/gui/qt/vlc.qrc
index 8c495e9c55..0787dd225d 100644
--- a/modules/gui/qt/vlc.qrc
+++ b/modules/gui/qt/vlc.qrc
@@ -291,6 +291,7 @@
         <file alias="CheckableModelSubMenu.qml">menus/qml/CheckableModelSubMenu.qml</file>
         <file alias="ViewMenu.qml">menus/qml/ViewMenu.qml</file>
         <file alias="PopupMenu.qml">menus/qml/PopupMenu.qml</file>
+        <file alias="GlobalShortcuts.qml">menus/qml/GlobalShortcuts.qml</file>
     </qresource>
     <qresource prefix="/player">
         <file alias="Player.qml">player/qml/Player.qml</file>
-- 
2.25.1



More information about the vlc-devel mailing list