Implement backspace support.
Pressing backspace pops the user up a directory level if they aren't at
the root directory of the current root.
BUG=27123794
Change-Id: I8f0a88a1194bf8f082d0b057a288a0c3da3068f6
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
index 4a55906..69d4bb9 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
@@ -284,7 +284,7 @@
if (dir != null) {
dir.pasteFromClipboard();
}
- return true;
+ return true;
case R.id.menu_advanced:
setDisplayAdvancedDevices(!LocalPreferences.getDisplayAdvancedDevices(this));
@@ -456,7 +456,7 @@
DirectoryFragment dir = getDirectoryFragment();
if (dir != null) {
dir.onSortOrderChanged();
- };
+ }
}
/**
@@ -474,7 +474,7 @@
DirectoryFragment dir = getDirectoryFragment();
if (dir != null) {
dir.onViewModeChanged();
- };
+ }
}
public void setPending(boolean pending) {
@@ -562,9 +562,7 @@
}
}
- if (size > 1) {
- mState.stack.pop();
- refreshCurrentRootAndDirectory(ANIM_LEAVE);
+ if (popDir()) {
return;
}
@@ -604,8 +602,12 @@
return true;
}
} else if (keyCode == KeyEvent.KEYCODE_TAB) {
+ // Tab toggles focus on the navigation drawer.
toggleNavDrawerFocus();
return true;
+ } else if (keyCode == KeyEvent.KEYCODE_DEL) {
+ popDir();
+ return true;
}
return super.onKeyDown(keyCode, event);
}
@@ -642,6 +644,21 @@
}
}
+ /**
+ * Pops the top entry off the directory stack, and returns the user to the previous directory.
+ * If the directory stack only contains one item, this method does nothing.
+ *
+ * @return Whether the stack was popped.
+ */
+ private boolean popDir() {
+ if (mState.stack.size() > 1) {
+ mState.stack.pop();
+ refreshCurrentRootAndDirectory(ANIM_LEAVE);
+ return true;
+ }
+ return false;
+ }
+
private static final class PickRootTask extends PairedTask<BaseActivity, Void, DocumentInfo> {
private RootInfo mRoot;