Merge "Add delete key support." into nyc-dev

This commit is contained in:
Ben Kwa
2016-03-16 23:24:42 +00:00
committed by Android (Google) Code Review

View File

@@ -164,6 +164,7 @@ public class DirectoryFragment extends Fragment
private String mQuery = null; private String mQuery = null;
private Selection mSelection = null; private Selection mSelection = null;
private boolean mSearchMode = false; private boolean mSearchMode = false;
private @Nullable ActionMode mActionMode;
@Override @Override
public View onCreateView( public View onCreateView(
@@ -438,7 +439,6 @@ public class DirectoryFragment extends Fragment
implements MultiSelectManager.Callback, ActionMode.Callback { implements MultiSelectManager.Callback, ActionMode.Callback {
private Selection mSelected = new Selection(); private Selection mSelected = new Selection();
private ActionMode mActionMode;
private int mNoCopyCount = 0; private int mNoCopyCount = 0;
private int mNoDeleteCount = 0; private int mNoDeleteCount = 0;
private int mNoRenameCount = -1; private int mNoRenameCount = -1;
@@ -577,10 +577,9 @@ public class DirectoryFragment extends Fragment
return true; return true;
case R.id.menu_delete: case R.id.menu_delete:
// Pass mode along to the delete function so it can // deleteDocuments will end action mode if the documents are deleted.
// end action mode when documents are deleted.
// It won't end action mode if user cancels the delete. // It won't end action mode if user cancels the delete.
deleteDocuments(selection, mode); deleteDocuments(selection);
return true; return true;
case R.id.menu_copy_to: case R.id.menu_copy_to:
@@ -689,7 +688,7 @@ public class DirectoryFragment extends Fragment
}.execute(selected); }.execute(selected);
} }
private void deleteDocuments(final Selection selected, final ActionMode mode) { private void deleteDocuments(final Selection selected) {
assert(!selected.isEmpty()); assert(!selected.isEmpty());
final DocumentInfo srcParent = getDisplayState().stack.peek(); final DocumentInfo srcParent = getDisplayState().stack.peek();
@@ -726,7 +725,9 @@ public class DirectoryFragment extends Fragment
// This is done here, rather in the onActionItemClicked // This is done here, rather in the onActionItemClicked
// so we can avoid de-selecting items in the case where // so we can avoid de-selecting items in the case where
// the user cancels the delete. // the user cancels the delete.
mode.finish(); if (mActionMode != null) {
mActionMode.finish();
}
// Hide the files in the UI...since the operation // Hide the files in the UI...since the operation
// might be queued up on FileOperationService. // might be queued up on FileOperationService.
// We're walking a line here. // We're walking a line here.
@@ -1271,6 +1272,16 @@ public class DirectoryFragment extends Fragment
case KeyEvent.KEYCODE_DPAD_CENTER: case KeyEvent.KEYCODE_DPAD_CENTER:
case KeyEvent.KEYCODE_BUTTON_A: case KeyEvent.KEYCODE_BUTTON_A:
return onActivate(doc); return onActivate(doc);
case KeyEvent.KEYCODE_FORWARD_DEL:
// This has to be handled here instead of in a keyboard shortcut, because
// keyboard shortcuts all have to be modified with the 'Ctrl' key.
if (mSelectionManager.hasSelection()) {
deleteDocuments(mSelectionManager.getSelection());
}
// Always handle the key, even if there was nothing to delete. This is a
// precaution to prevent other handlers from potentially picking up the event
// and triggering extra behaviours.
return true;
} }
return false; return false;