moment/src/qml/Shortcuts.qml

220 lines
5.7 KiB
QML
Raw Normal View History

import QtQuick 2.12
import QtQuick.Controls 2.12
import "Base"
import "utils.js" as Utils
2019-12-08 12:42:40 -04:00
Item {
visible: false
// Flickable or ListView that should be affected by scroll shortcuts
property Item flickTarget
// TabBar that should be affected by tab navigation shortcuts
property TabBar tabsTarget
// DebugConsole that should be affected by console shortcuts
property DebugConsole debugConsole
// App
HShortcut {
enabled: debugMode
2019-09-05 15:05:57 -04:00
sequences: settings.keys.startPythonDebugger
2019-12-08 12:42:40 -04:00
onActivated: py.call("APP.pdb")
}
2019-09-05 15:05:57 -04:00
HShortcut {
enabled: debugMode && debugConsole
2019-09-05 15:05:57 -04:00
sequences: settings.keys.toggleDebugConsole
2019-12-08 12:42:40 -04:00
onActivated: debugConsole.visible = ! debugConsole.visible
2019-09-05 15:05:57 -04:00
}
HShortcut {
sequences: settings.keys.reloadConfig
2019-12-08 12:42:40 -04:00
onActivated: py.loadSettings(() => { mainUI.pressAnimation.start() })
}
2019-12-04 09:08:38 -04:00
HShortcut {
sequences: settings.keys.zoomIn
2019-12-08 12:42:40 -04:00
onActivated: theme.uiScale += 0.1
2019-12-04 09:08:38 -04:00
}
HShortcut {
sequences: settings.keys.zoomOut
2019-12-08 12:42:40 -04:00
onActivated: theme.uiScale = Math.max(0.1, theme.uiScale - 0.1)
2019-12-04 09:08:38 -04:00
}
HShortcut {
sequences: settings.keys.zoomReset
2019-12-08 12:42:40 -04:00
onActivated: theme.uiScale = 1
2019-12-04 09:08:38 -04:00
}
// Pages
HShortcut {
sequences: settings.keys.goToLastPage
2019-12-08 12:42:40 -04:00
onActivated: mainUI.pageLoader.showPrevious()
}
// Page scrolling
HShortcut {
enabled: flickTarget
sequences: settings.keys.scrollUp
2019-12-08 12:42:40 -04:00
onActivated: Utils.smartVerticalFlick(flickTarget, -335)
2019-08-19 14:05:59 -04:00
}
HShortcut {
enabled: flickTarget
sequences: settings.keys.scrollDown
2019-12-08 12:42:40 -04:00
onActivated: Utils.smartVerticalFlick(flickTarget, 335)
}
2019-08-30 13:06:54 -04:00
HShortcut {
enabled: flickTarget
2019-08-30 13:06:54 -04:00
sequences: settings.keys.scrollPageUp
2019-12-08 12:42:40 -04:00
onActivated: Utils.smartVerticalFlick(
2019-09-06 17:03:52 -04:00
flickTarget, -2.3 * flickTarget.height, 8,
2019-08-30 13:06:54 -04:00
)
2019-09-06 17:03:52 -04:00
// Ensure only a slight slip after releasing the key
2019-12-08 12:42:40 -04:00
// onReleased: Utils.smartVerticalFlick(flickTarget, -335)
2019-08-30 13:06:54 -04:00
}
HShortcut {
enabled: flickTarget
2019-08-30 13:06:54 -04:00
sequences: settings.keys.scrollPageDown
2019-12-08 12:42:40 -04:00
onActivated: Utils.smartVerticalFlick(
2019-09-06 17:03:52 -04:00
flickTarget, 2.3 * flickTarget.height, 8,
2019-08-30 13:06:54 -04:00
)
2019-12-08 12:42:40 -04:00
// onReleased: Utils.smartVerticalFlick(flickTarget, 335)
2019-08-30 13:06:54 -04:00
}
2019-08-30 13:40:56 -04:00
HShortcut {
enabled: flickTarget
2019-08-30 13:40:56 -04:00
sequences: settings.keys.scrollToTop
2019-12-08 12:42:40 -04:00
onActivated: Utils.flickToTop(flickTarget)
2019-08-30 13:40:56 -04:00
}
HShortcut {
enabled: flickTarget
2019-08-30 13:40:56 -04:00
sequences: settings.keys.scrollToBottom
2019-12-08 12:42:40 -04:00
onActivated: Utils.flickToBottom(flickTarget)
2019-08-30 13:40:56 -04:00
}
2019-08-30 13:06:54 -04:00
// Tab navigation
HShortcut {
enabled: tabsTarget
sequences: settings.keys.previousTab
2019-12-08 12:42:40 -04:00
onActivated: tabsTarget.setCurrentIndex(
Utils.numberWrapAt(tabsTarget.currentIndex - 1, tabsTarget.count),
)
}
HShortcut {
enabled: tabsTarget
sequences: settings.keys.nextTab
2019-12-08 12:42:40 -04:00
onActivated: tabsTarget.setCurrentIndex(
Utils.numberWrapAt(tabsTarget.currentIndex + 1, tabsTarget.count),
)
}
// SidePane
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.focusSidePane
2019-12-08 12:42:40 -04:00
onActivated: mainUI.sidePane.toggleFocus()
context: Qt.ApplicationShortcut
}
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.clearRoomFilter
2019-12-08 12:42:40 -04:00
onActivated: mainUI.sidePane.toolBar.roomFilter = ""
}
2019-08-23 11:02:22 -04:00
HShortcut {
enabled: mainUI.accountsPresent
2019-08-23 11:02:22 -04:00
sequences: settings.keys.addNewAccount
2019-12-08 12:42:40 -04:00
onActivated: mainUI.sidePane.toolBar.addAccountButton.clicked()
2019-08-23 11:02:22 -04:00
}
2019-11-10 08:32:17 -04:00
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.addNewChat
2019-12-08 12:42:40 -04:00
onActivated: mainUI.sidePane.sidePaneList.addNewChat()
2019-11-10 08:32:17 -04:00
}
2019-11-10 08:54:45 -04:00
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.accountSettings
2019-12-08 12:42:40 -04:00
onActivated: mainUI.sidePane.sidePaneList.accountSettings()
2019-11-10 08:54:45 -04:00
}
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.toggleCollapseAccount
2019-12-08 12:42:40 -04:00
onActivated: mainUI.sidePane.sidePaneList.toggleCollapseAccount()
2019-11-10 08:54:45 -04:00
}
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.goToPreviousRoom
2019-12-08 12:42:40 -04:00
onActivated: mainUI.sidePane.sidePaneList.previous()
}
HShortcut {
enabled: mainUI.accountsPresent
sequences: settings.keys.goToNextRoom
2019-12-08 12:42:40 -04:00
onActivated: mainUI.sidePane.sidePaneList.next()
}
2019-09-08 11:49:47 -04:00
// Chat
HShortcut {
enabled: window.uiState.page == "Chat/Chat.qml"
sequences: settings.keys.clearRoomMessages
2019-12-08 12:42:40 -04:00
onActivated: Utils.makePopup(
2019-09-09 08:57:38 -04:00
"Popups/ClearMessagesPopup.qml",
2019-09-09 06:23:46 -04:00
mainUI,
{
userId: window.uiState.pageProperties.userId,
roomId: window.uiState.pageProperties.roomId,
}
2019-09-08 11:49:47 -04:00
)
}
2019-11-06 16:45:33 -04:00
HShortcut {
enabled: window.uiState.page == "Chat/Chat.qml"
sequences: settings.keys.sendFile
2019-12-08 12:42:40 -04:00
onActivated: Utils.makeObject(
2019-11-06 16:45:33 -04:00
"Dialogs/SendFilePicker.qml",
mainUI,
{
userId: window.uiState.pageProperties.userId,
roomId: window.uiState.pageProperties.roomId,
2019-11-06 16:45:33 -04:00
destroyWhenDone: true,
},
picker => { picker.dialog.open() }
)
}
HShortcut {
enabled: window.uiState.page == "Chat/Chat.qml"
sequences: settings.keys.sendFileFromPathInClipboard
2019-12-08 12:42:40 -04:00
onActivated: Utils.sendFile(
window.uiState.pageProperties.userId,
window.uiState.pageProperties.roomId,
Clipboard.text.trim(),
)
}
}