Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 359bbebb authored by Ben Kwa's avatar Ben Kwa
Browse files

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
parent 21eb4e26
Loading
Loading
Loading
Loading
+23 −6
Original line number Diff line number Diff line
@@ -456,7 +456,7 @@ public abstract class BaseActivity extends Activity
        DirectoryFragment dir = getDirectoryFragment();
        if (dir != null) {
            dir.onSortOrderChanged();
        };
        }
    }

    /**
@@ -474,7 +474,7 @@ public abstract class BaseActivity extends Activity
        DirectoryFragment dir = getDirectoryFragment();
        if (dir != null) {
            dir.onViewModeChanged();
        };
        }
    }

    public void setPending(boolean pending) {
@@ -562,9 +562,7 @@ public abstract class BaseActivity extends Activity
            }
        }

        if (size > 1) {
            mState.stack.pop();
            refreshCurrentRootAndDirectory(ANIM_LEAVE);
        if (popDir()) {
            return;
        }

@@ -604,8 +602,12 @@ public abstract class BaseActivity extends Activity
                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 @@ public abstract class BaseActivity extends Activity
        }
    }

    /**
     * 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;