mirror of
https://github.com/overte-org/overte.git
synced 2025-04-16 00:41:16 +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; });
|
||||
showFiles = !root.selectDirectory
|
||||
}
|
||||
onFolderChanged: fileTableView.currentRow = 0;
|
||||
onFolderChanged: {
|
||||
fileTableView.selection.clear();
|
||||
fileTableView.selection.select(0);
|
||||
fileTableView.currentRow = 0;
|
||||
}
|
||||
}
|
||||
|
||||
function navigateToRow(row) {
|
||||
|
@ -199,6 +203,59 @@ ModalWindow {
|
|||
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 {
|
||||
|
|
|
@ -3,6 +3,11 @@ import QtQuick.Controls 1.4
|
|||
|
||||
TableView {
|
||||
id: root
|
||||
onActiveFocusChanged: {
|
||||
if (activeFocus && currentRow == -1) {
|
||||
root.selection.select(0)
|
||||
}
|
||||
}
|
||||
|
||||
itemDelegate: Component {
|
||||
Item {
|
||||
|
|
Loading…
Reference in a new issue