diff options
| author | 2016-02-10 18:19:50 +0000 | |
|---|---|---|
| committer | 2016-02-10 18:19:50 +0000 | |
| commit | 405da7c59bf1a28c3277f52c532ad1c823e5ff58 (patch) | |
| tree | 353194e710e56413609946dcd09fc099253baff7 | |
| parent | 691546e5b7f94a6e2d76630ee1287e0b9c69e7a8 (diff) | |
| parent | 404168096789c6dde4db82dc6360a1a25e6ff636 (diff) | |
Merge "Improve document rename experience - Initially select the name of the file without extension - Trigger renaming action when software keyboard Done button pressed - Trigger creating new directory when software kayboard Done button pressed" into nyc-dev
| -rw-r--r-- | packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java | 5 | ||||
| -rw-r--r-- | packages/DocumentsUI/src/com/android/documentsui/dirlist/RenameDocumentFragment.java | 40 |
2 files changed, 38 insertions, 7 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java index df036b93651c..40bd754b35b0 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java @@ -36,6 +36,7 @@ import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.util.Log; import android.view.KeyEvent; +import android.view.inputmethod.EditorInfo; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; @@ -86,9 +87,9 @@ public class CreateDirectoryFragment extends DialogFragment { @Override public boolean onEditorAction( TextView view, int actionId, @Nullable KeyEvent event) { - if (event != null + if ((actionId == EditorInfo.IME_ACTION_DONE) || (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER - && event.hasNoModifiers()) { + && event.hasNoModifiers())) { createDirectory(editText.getText().toString()); dialog.dismiss(); return true; diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/RenameDocumentFragment.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/RenameDocumentFragment.java index 0bb682e7c967..7394c12558f8 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/RenameDocumentFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/RenameDocumentFragment.java @@ -36,6 +36,7 @@ import android.support.annotation.Nullable; import android.support.design.widget.Snackbar; import android.util.Log; import android.view.KeyEvent; +import android.view.inputmethod.EditorInfo; import android.view.LayoutInflater; import android.view.View; import android.widget.EditText; @@ -47,6 +48,7 @@ import com.android.documentsui.DocumentsApplication; import com.android.documentsui.R; import com.android.documentsui.Snackbars; import com.android.documentsui.model.DocumentInfo; + /** * Dialog to rename file or directory. */ @@ -68,8 +70,7 @@ public class RenameDocumentFragment extends DialogFragment { View view = dialogInflater.inflate(R.layout.dialog_file_name, null, false); final EditText editText = (EditText) view.findViewById(android.R.id.text1); - editText.setText(mDocument.displayName); - + fillWithFileName(editText, mDocument.displayName); builder.setTitle(R.string.menu_rename); builder.setView(view); @@ -91,9 +92,9 @@ public class RenameDocumentFragment extends DialogFragment { @Override public boolean onEditorAction( TextView view, int actionId, @Nullable KeyEvent event) { - if (event != null + if ((actionId == EditorInfo.IME_ACTION_DONE) || (event != null && event.getKeyCode() == KeyEvent.KEYCODE_ENTER - && event.hasNoModifiers()) { + && event.hasNoModifiers())) { renameDocuments(editText.getText().toString()); dialog.dismiss(); return true; @@ -105,10 +106,39 @@ public class RenameDocumentFragment extends DialogFragment { return dialog; } + /** + * Validates if string is a proper document name. + * Checks if string is not empty. More rules might be added later. + * @param docName string representing document name + * @returns true if string is a valid name. + **/ + private boolean isValidDocumentName(String docName) { + return !docName.isEmpty(); + } + + /** + * Fills text field with the file name and selects the name without extension. + * + * @param editText text field to be filled + * @param name full name of the file + */ + private void fillWithFileName(EditText editText, String name) { + editText.setText(name); + int separatorIndex = name.indexOf("."); + editText.setSelection(0, separatorIndex == -1 ? name.length() : separatorIndex); + } + private void renameDocuments(String newDisplayName) { BaseActivity activity = (BaseActivity) getActivity(); - new RenameDocumentsTask(activity, newDisplayName).execute(mDocument); + if (isValidDocumentName(newDisplayName)) { + new RenameDocumentsTask(activity, newDisplayName).execute(mDocument); + } else { + Log.w(TAG, "Failed to rename file - invalid name:" + newDisplayName); + Snackbars.makeSnackbar(getActivity(), R.string.rename_error, + Snackbar.LENGTH_SHORT).show(); + } + } private class RenameDocumentsTask extends AsyncTask<DocumentInfo, Void, DocumentInfo> { |