mirror of
https://github.com/overte-org/overte.git
synced 2025-08-04 07:03:41 +02:00
Add better keyboard navigation to file dialog
This commit is contained in:
parent
e376b781c1
commit
427644cb77
2 changed files with 63 additions and 1 deletions
|
@ -181,7 +181,11 @@ ModalWindow {
|
||||||
upButton.enabled = Qt.binding(function() { return (model.parentFolder && model.parentFolder != "") ? true : false; });
|
upButton.enabled = Qt.binding(function() { return (model.parentFolder && model.parentFolder != "") ? true : false; });
|
||||||
showFiles = !root.selectDirectory
|
showFiles = !root.selectDirectory
|
||||||
}
|
}
|
||||||
onFolderChanged: fileTableView.currentRow = 0;
|
onFolderChanged: {
|
||||||
|
fileTableView.selection.clear();
|
||||||
|
fileTableView.selection.select(0);
|
||||||
|
fileTableView.currentRow = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function navigateToRow(row) {
|
function navigateToRow(row) {
|
||||||
|
@ -199,6 +203,59 @@ ModalWindow {
|
||||||
okAction.trigger();
|
okAction.trigger();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
property string prefix: ""
|
||||||
|
|
||||||
|
function addToPrefix(event) {
|
||||||
|
if (!event.text || event.text === "") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
var newPrefix = prefix + event.text.toLowerCase();
|
||||||
|
var matchedIndex = -1;
|
||||||
|
for (var i = 0; i < model.count; ++i) {
|
||||||
|
var name = model.get(i, "fileName").toLowerCase();
|
||||||
|
if (0 === name.indexOf(newPrefix)) {
|
||||||
|
matchedIndex = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (matchedIndex !== -1) {
|
||||||
|
fileTableView.selection.clear();
|
||||||
|
fileTableView.selection.select(matchedIndex);
|
||||||
|
fileTableView.currentRow = matchedIndex;
|
||||||
|
fileTableView.prefix = newPrefix;
|
||||||
|
}
|
||||||
|
prefixClearTimer.restart();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Timer {
|
||||||
|
id: prefixClearTimer
|
||||||
|
interval: 1000
|
||||||
|
repeat: false
|
||||||
|
running: false
|
||||||
|
onTriggered: fileTableView.prefix = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
Keys.onPressed: {
|
||||||
|
switch (event.key) {
|
||||||
|
case Qt.Key_Backspace:
|
||||||
|
case Qt.Key_Tab:
|
||||||
|
case Qt.Key_Backtab:
|
||||||
|
event.accepted = false;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
if (addToPrefix(event)) {
|
||||||
|
event.accepted = true
|
||||||
|
} else {
|
||||||
|
event.accepted = false;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TextField {
|
TextField {
|
||||||
|
|
|
@ -3,6 +3,11 @@ import QtQuick.Controls 1.4
|
||||||
|
|
||||||
TableView {
|
TableView {
|
||||||
id: root
|
id: root
|
||||||
|
onActiveFocusChanged: {
|
||||||
|
if (activeFocus && currentRow == -1) {
|
||||||
|
root.selection.select(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
itemDelegate: Component {
|
itemDelegate: Component {
|
||||||
Item {
|
Item {
|
||||||
|
|
Loading…
Reference in a new issue