Skip to content

Commit 43e93d8

Browse files
committed
Improve keyboard navigation in File Manager
1 parent 7a6770b commit 43e93d8

File tree

2 files changed

+82
-22
lines changed

2 files changed

+82
-22
lines changed

application/components/FileManager.qml

+37-5
Original file line numberDiff line numberDiff line change
@@ -295,15 +295,47 @@ Item {
295295
}
296296

297297
Keys.onPressed: function(event) {
298-
if ((event.key === Qt.Key_Backspace) && Backend.fileManager.canGoBack) {
298+
switch(event.key) {
299+
case Qt.Key_Backspace:
300+
if(Backend.fileManager.canGoBack) {
299301
Backend.fileManager.historyBack();
300-
event.accepted = true;
301-
} else if((event.key === Qt.Key_L) && (event.modifiers & Qt.ControlModifier)) {
302+
}
303+
event.accepted = true;
304+
return;
305+
306+
case Qt.Key_L:
307+
if(Backend.fileManager.isRoot) {
308+
event.accepted = false;
309+
} else if(event.modifiers & Qt.ControlModifier) {
302310
beginUpload();
303-
} else if((event.key === Qt.Key_N) && (event.modifiers & Qt.ControlModifier)) {
311+
event.accepted = true;
312+
} else {
313+
event.accepted = false;
314+
}
315+
return;
316+
317+
case Qt.Key_N:
318+
if(Backend.fileManager.isRoot) {
319+
event.accepted = false;
320+
} else if(event.modifiers & Qt.ControlModifier) {
304321
Backend.fileManager.beginMkDir();
305-
} else if((event.key === Qt.Key_G) && (event.modifiers & Qt.ControlModifier)) {
322+
event.accepted = true;
323+
} else {
324+
event.accepted = false;
325+
}
326+
return;
327+
328+
case Qt.Key_G:
329+
if(event.modifiers & Qt.ControlModifier) {
306330
Backend.fileManager.refresh()
331+
event.accepted = true;
332+
} else {
333+
event.accepted = false;
307334
}
335+
return;
336+
337+
default:
338+
event.accepted = false;
339+
}
308340
}
309341
}

application/components/FileManagerDelegate.qml

+45-17
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ Item {
270270

271271
onTriggered: beginDelete();
272272
}
273-
273+
274274
function rightClick(mouse) {
275275
delegate.GridView.view.currentIndex = delegate.index
276276
forceActiveFocus(Qt.MouseFocusReason);
@@ -317,7 +317,7 @@ Item {
317317
nameLabel.text = newName;
318318
editBox.visible = false;
319319
}
320-
320+
321321
function beginDelete() {
322322
const doRemove = function() {
323323
Backend.fileManager.remove(delegate.fileName, delegate.isDirectory);
@@ -345,31 +345,59 @@ Item {
345345
}
346346

347347
Keys.onPressed: function(event) {
348-
if (editBox.visible) {
348+
if(editBox.visible) {
349349
event.accepted = false;
350350
return;
351351
}
352-
if((event.key === Qt.Key_Delete) && (event.modifiers & Qt.ShiftModifier)) {
353-
Backend.fileManager.remove(delegate.fileName, delegate.isDirectory);
354-
event.accepted = true;
355-
} else if((event.key === Qt.Key_Delete) && !(event.modifiers & Qt.ShiftModifier)) {
356-
beginDelete();
357-
event.accepted = true;
358-
} else if (event.key === Qt.Key_Return) {
359-
if (!delegate.isDirectory || editFlag) {
360-
editFlag = false;
352+
353+
switch(event.key) {
354+
case Qt.Key_Delete:
355+
if(Backend.fileManager.isRoot) {
361356
event.accepted = false;
362-
return;
357+
} else if(event.modifiers & Qt.ShiftModifier) {
358+
Backend.fileManager.remove(delegate.fileName, delegate.isDirectory);
359+
event.accepted = true;
363360
} else {
361+
beginDelete();
362+
event.accepted = true;
363+
}
364+
return;
365+
366+
case Qt.Key_Return:
367+
if(delegate.isDirectory && !editFlag) {
364368
Backend.fileManager.cd(delegate.fileName);
365369
event.accepted = true;
370+
} else {
371+
editFlag = false;
372+
event.accepted = false;
366373
}
367-
} else if ((event.key === Qt.Key_D) && (event.modifiers & Qt.ControlModifier)) {
368-
beginDownload();
369-
} else if ((event.key === Qt.Key_E) && (event.modifiers & Qt.ControlModifier)) {
370-
beginEdit();
374+
return;
375+
376+
case Qt.Key_E:
377+
if(Backend.fileManager.isRoot) {
378+
event.accepted = false;
379+
} else if(event.modifiers & Qt.ControlModifier) {
380+
beginEdit();
381+
event.accepted = true;
382+
} else {
383+
event.accepted = false;
384+
}
385+
return;
386+
387+
case Qt.Key_D:
388+
if(event.modifiers & Qt.ControlModifier) {
389+
beginDownload();
390+
event.accepted = true;
391+
} else {
392+
event.accepted = false;
393+
}
394+
return;
395+
396+
default:
397+
event.accepted = false;
371398
}
372399
}
400+
373401
Connections {
374402
target: confirmationDialog
375403
function onVisibleChanged() {

0 commit comments

Comments
 (0)