plasmoid: Improve shortcut handling

This commit is contained in:
Martchus 2017-10-04 00:31:51 +02:00
parent c6d21ea3a1
commit 265e41004f
1 changed files with 40 additions and 38 deletions

View File

@ -50,11 +50,34 @@ ColumnLayout {
onSizeChanged: updateSize()
}
// shortcut handling
// define shortcuts to trigger actions for currently selected item
function clickCurrentItemButton(buttonName) {
var currentItem = currentItem = mainTabGroup.currentTab.item.view.currentItem
if (!currentItem) {
return
}
var button = currentItem[buttonName]
if (button && button.enabled) {
button.clicked()
}
}
Shortcut {
sequence: "Ctrl+R"
onActivated: clickCurrentItemButton("rescanButton")
}
Shortcut {
sequence: "Ctrl+P"
onActivated: clickCurrentItemButton("resumePauseButton")
}
Shortcut {
sequence: "Ctrl+O"
onActivated: clickCurrentItemButton("openButton")
}
// define custom key handling for switching tabs, selecting items and filtering
Keys.onPressed: {
// note: event only received after clicking the tab buttons in plasmoidviewer
// but works as expected in plasmashell
var currentItem
switch (event.key) {
case Qt.Key_Up:
switch (event.modifiers) {
@ -114,7 +137,8 @@ ColumnLayout {
// fallthrough
case Qt.Key_Return:
// toggle expanded state of current item
if ((currentItem = mainTabGroup.currentTab.item.view.currentItem)) {
var currentItem = mainTabGroup.currentTab.item.view.currentItem
if (currentItem) {
currentItem.expanded = !currentItem.expanded
}
break
@ -141,40 +165,6 @@ ColumnLayout {
// select downloads tab
downloadsTabButton.clicked()
break
case Qt.Key_R:
// rescan/resume/pause selected item
if ((currentItem = mainTabGroup.currentTab.item.view.currentItem)) {
switch (event.modifiers) {
case Qt.ControlModifier:
// rescan selected item if it has a rescan button
if (currentItem.rescanButton
&& currentItem.rescanButton.enabled) {
currentItem.rescanButton.clicked()
}
break
case Qt.ShiftModifier:
// resume/pause selected item if it has a resume/pause button
if (currentItem.resumePauseButton) {
currentItem.resumePauseButton.clicked()
}
break
default:
sendKeyEventToFilter(event)
}
} else {
sendKeyEventToFilter(event)
}
break
case Qt.Key_O:
// open selected item in file browser if it has an open button
if (event.modifiers === Qt.ControlModifier
&& (currentItem = mainTabGroup.currentTab.item.view.currentItem)
&& currentItem.openButton) {
currentItem.openButton.clicked()
} else {
sendKeyEventToFilter(event)
}
break
default:
sendKeyEventToFilter(event)
return
@ -261,6 +251,10 @@ ColumnLayout {
break
}
}
Shortcut {
sequence: "Ctrl+Shift+P"
onActivated: connectButton.clicked()
}
}
TinyButton {
id: startStopButton
@ -313,6 +307,14 @@ ColumnLayout {
onClicked: plasmoid.nativeInterface.service.toggleRunning()
style: TinyButtonStyle {
}
Shortcut {
sequence: "Ctrl+Shift+S"
onActivated: {
if (startStopButton.visible) {
startStopButton.clicked()
}
}
}
}
Item {
Layout.fillWidth: true
@ -367,7 +369,7 @@ ColumnLayout {
iconSource: "view-refresh"
onClicked: plasmoid.nativeInterface.connection.rescanAllDirs()
Shortcut {
sequence: "Ctrl+R"
sequence: "Ctrl+Shift+R"
onActivated: rescanAllDirsButton.clicked()
}
}