moment/src/gui/GlobalShortcuts.qml

239 lines
6.2 KiB
QML
Raw Normal View History

2019-12-19 22:46:16 +11:00
// SPDX-License-Identifier: LGPL-3.0-or-later
import QtQuick 2.12
import QtQuick.Controls 2.12
import "Base"
2019-12-09 03:42:40 +11:00
Item {
visible: false
// Flickable or ListView that should be affected by scroll shortcuts
property Item flickTarget
// A QQC Container that should be affected by tab navigation shortcuts
property Container tabsTarget
// DebugConsoleLoader that should be affected by console shortcuts
property DebugConsoleLoader debugConsoleLoader
// DebugConsoleLoader to activate if no other loader is active and the
// shortcut to bring up a console is pressed
property DebugConsoleLoader defaultDebugConsoleLoader
readonly property DebugConsole debugConsole:
debugConsoleLoader ? debugConsoleLoader.item : null
readonly property DebugConsole defaultDebugConsole:
defaultDebugConsoleLoader ? defaultDebugConsoleLoader.item : null
2019-12-10 04:00:42 +11:00
readonly property Item toFlick:
debugConsole && debugConsole.activeFocus ?
debugConsole.commandsView :
flickTarget
2019-12-10 04:00:42 +11:00
// App
HShortcut {
enabled: debugMode
2019-09-06 05:05:57 +10:00
sequences: settings.keys.startPythonDebugger
onActivated: py.call("BRIDGE.pdb")
}
2019-09-06 05:05:57 +10:00
HShortcut {
enabled: debugMode
2019-09-06 05:05:57 +10:00
sequences: settings.keys.toggleDebugConsole
onActivated: {
if (debugConsole) {
debugConsole.visible = ! debugConsole.visible
} else if (! defaultDebugConsoleLoader.active) {
defaultDebugConsoleLoader.active = true
} else {
defaultDebugConsole.visible = ! defaultDebugConsole.visible
}
}
2019-09-06 05:05:57 +10:00
}
HShortcut {
sequences: settings.keys.reloadConfig
2019-12-09 03:42:40 +11:00
onActivated: py.loadSettings(() => { mainUI.pressAnimation.start() })
}
2019-12-05 00:08:38 +11:00
HShortcut {
sequences: settings.keys.zoomIn
2019-12-09 03:42:40 +11:00
onActivated: theme.uiScale += 0.1
2019-12-05 00:08:38 +11:00
}
HShortcut {
sequences: settings.keys.zoomOut
2019-12-09 03:42:40 +11:00
onActivated: theme.uiScale = Math.max(0.1, theme.uiScale - 0.1)
2019-12-05 00:08:38 +11:00
}
HShortcut {
sequences: settings.keys.zoomReset
2019-12-09 03:42:40 +11:00
onActivated: theme.uiScale = 1
2019-12-05 00:08:38 +11:00
}
// Pages
HShortcut {
sequences: settings.keys.goToLastPage
2019-12-09 03:42:40 +11:00
onActivated: mainUI.pageLoader.showPrevious()
}
// Page scrolling
HShortcut {
2019-12-10 04:00:42 +11:00
enabled: toFlick
sequences: settings.keys.scrollUp
onActivated: utils.flickPages(toFlick, -1 / 10)
2019-08-20 04:05:59 +10:00
}
HShortcut {
2019-12-10 04:00:42 +11:00
enabled: toFlick
sequences: settings.keys.scrollDown
onActivated: utils.flickPages(toFlick, 1 / 10)
}
2019-08-31 03:06:54 +10:00
HShortcut {
2019-12-10 04:00:42 +11:00
enabled: toFlick
2019-08-31 03:06:54 +10:00
sequences: settings.keys.scrollPageUp
onActivated: utils.flickPages(toFlick, -1)
2019-08-31 03:06:54 +10:00
}
HShortcut {
2019-12-10 04:00:42 +11:00
enabled: toFlick
2019-08-31 03:06:54 +10:00
sequences: settings.keys.scrollPageDown
onActivated: utils.flickPages(toFlick, 1)
2019-08-31 03:06:54 +10:00
}
2019-08-31 03:40:56 +10:00
HShortcut {
2019-12-10 04:00:42 +11:00
enabled: toFlick
2019-08-31 03:40:56 +10:00
sequences: settings.keys.scrollToTop
onActivated: utils.flickToTop(toFlick)
2019-08-31 03:40:56 +10:00
}
HShortcut {
2019-12-10 04:00:42 +11:00
enabled: toFlick
2019-08-31 03:40:56 +10:00
sequences: settings.keys.scrollToBottom
onActivated: utils.flickToBottom(toFlick)
2019-08-31 03:40:56 +10:00
}
2019-08-31 03:06:54 +10:00
// Tab navigation
HShortcut {
enabled: tabsTarget
sequences: settings.keys.previousTab
2019-12-09 03:42:40 +11:00
onActivated: tabsTarget.setCurrentIndex(
utils.numberWrapAt(tabsTarget.currentIndex - 1, tabsTarget.count),
)
}
HShortcut {
enabled: tabsTarget
sequences: settings.keys.nextTab
2019-12-09 03:42:40 +11:00
onActivated: tabsTarget.setCurrentIndex(
utils.numberWrapAt(tabsTarget.currentIndex + 1, tabsTarget.count),
)
}
2019-12-11 06:17:41 +11:00
// MainPane
HShortcut {
enabled: mainUI.accountsPresent
2019-12-11 06:17:41 +11:00
sequences: settings.keys.focusMainPane
onActivated: mainUI.mainPane.toggleFocus()
2019-12-09 03:42:40 +11:00
context: Qt.ApplicationShortcut
}
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.clearRoomFilter
2019-12-11 06:17:41 +11:00
onActivated: mainUI.mainPane.toolBar.roomFilter = ""
}
2019-08-24 01:02:22 +10:00
HShortcut {
enabled: mainUI.accountsPresent
2019-08-24 01:02:22 +10:00
sequences: settings.keys.addNewAccount
2019-12-11 06:17:41 +11:00
onActivated: mainUI.mainPane.toolBar.addAccountButton.clicked()
2019-08-24 01:02:22 +10:00
}
2019-11-10 23:32:17 +11:00
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.addNewChat
2019-12-11 06:17:41 +11:00
onActivated: mainUI.mainPane.mainPaneList.addNewChat()
2019-11-10 23:32:17 +11:00
}
2019-11-10 23:54:45 +11:00
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.accountSettings
2019-12-11 06:17:41 +11:00
onActivated: mainUI.mainPane.mainPaneList.accountSettings()
2019-11-10 23:54:45 +11:00
}
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.toggleCollapseAccount
2019-12-11 06:17:41 +11:00
onActivated: mainUI.mainPane.mainPaneList.toggleCollapseAccount()
2019-11-10 23:54:45 +11:00
}
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.goToPreviousRoom
2019-12-11 06:17:41 +11:00
onActivated: mainUI.mainPane.mainPaneList.previous()
}
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.goToNextRoom
2019-12-11 06:17:41 +11:00
onActivated: mainUI.mainPane.mainPaneList.next()
}
2019-09-09 01:49:47 +10:00
// Chat
HShortcut {
2019-12-18 19:53:08 +11:00
enabled: window.uiState.page === "Pages/Chat/Chat.qml"
2019-09-09 01:49:47 +10:00
sequences: settings.keys.clearRoomMessages
onActivated: utils.makePopup(
2019-09-09 22:57:38 +10:00
"Popups/ClearMessagesPopup.qml",
2019-09-09 20:23:46 +10:00
mainUI,
{
userId: window.uiState.pageProperties.userId,
roomId: window.uiState.pageProperties.roomId,
}
2019-09-09 01:49:47 +10:00
)
}
2019-11-07 07:45:33 +11:00
HShortcut {
2019-12-18 19:53:08 +11:00
enabled: window.uiState.page === "Pages/Chat/Chat.qml"
2019-11-07 07:45:33 +11:00
sequences: settings.keys.sendFile
onActivated: utils.makeObject(
2019-11-07 07:45:33 +11:00
"Dialogs/SendFilePicker.qml",
mainUI,
{
userId: window.uiState.pageProperties.userId,
roomId: window.uiState.pageProperties.roomId,
2019-11-07 07:45:33 +11:00
destroyWhenDone: true,
},
picker => { picker.dialog.open() }
)
}
HShortcut {
2019-12-18 19:53:08 +11:00
enabled: window.uiState.page === "Pages/Chat/Chat.qml"
sequences: settings.keys.sendFileFromPathInClipboard
onActivated: utils.sendFile(
window.uiState.pageProperties.userId,
window.uiState.pageProperties.roomId,
Clipboard.text.trim(),
)
}
}