Merge "Performe save when ENTER is pressed."
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
index 9d2d171..83e3440 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
@@ -469,14 +469,18 @@
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (DEBUG) Log.d(mTag, "onKeyUp: keycode = " + keyCode);
- DirectoryFragment dir = DirectoryFragment.get(getFragmentManager());
- switch (keyCode) {
- case KeyEvent.KEYCODE_MOVE_HOME:
- dir.focusFirstFile();
- return true;
- case KeyEvent.KEYCODE_MOVE_END:
- dir.focusLastFile();
- return true;
+
+ // TODO: Support for RecentsCreateFragment.
+ DirectoryFragment fragment = DirectoryFragment.get(getFragmentManager());
+ if (fragment != null) {
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_MOVE_HOME:
+ fragment.focusFirstFile();
+ return true;
+ case KeyEvent.KEYCODE_MOVE_END:
+ fragment.focusLastFile();
+ return true;
+ }
}
return super.onKeyUp(keyCode, event);
}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
index 94fce59..a3a431f 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
@@ -205,9 +205,12 @@
return builder.toString();
}
- public static DirectoryFragment get(FragmentManager fm) {
+ public static @Nullable DirectoryFragment get(FragmentManager fm) {
// TODO: deal with multiple directories shown at once
- return (DirectoryFragment) fm.findFragmentById(R.id.container_directory);
+ Fragment fragment = fm.findFragmentById(R.id.container_directory);
+ return fragment instanceof DirectoryFragment
+ ? (DirectoryFragment) fragment
+ : null;
}
@Override
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
index 6b428f5..aae5269 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
@@ -337,7 +337,7 @@
if (mState.action == ACTION_CREATE) {
final FragmentManager fm = getFragmentManager();
- SaveFragment.get(fm).setSaveEnabled(cwd != null && cwd.isCreateSupported());
+ SaveFragment.get(fm).prepareForDirectory(cwd);
}
Menus.disableHiddenItems(menu);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java b/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java
index ce98db2..f3b750a 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java
@@ -23,6 +23,7 @@
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
+import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -79,6 +80,17 @@
mDisplayName = (EditText) view.findViewById(android.R.id.title);
mDisplayName.addTextChangedListener(mDisplayNameWatcher);
mDisplayName.setText(getArguments().getString(EXTRA_DISPLAY_NAME));
+ mDisplayName.setOnKeyListener(
+ new View.OnKeyListener() {
+ @Override
+ public boolean onKey(View v, int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_ENTER && mSave.isEnabled()) {
+ performSave();
+ return true;
+ }
+ return false;
+ }
+ });
mSave = (Button) view.findViewById(android.R.id.button1);
mSave.setOnClickListener(mSaveListener);
@@ -113,17 +125,22 @@
private View.OnClickListener mSaveListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
- final DocumentsActivity activity = DocumentsActivity.get(SaveFragment.this);
- if (mReplaceTarget != null) {
- activity.onSaveRequested(mReplaceTarget);
- } else {
- final String mimeType = getArguments().getString(EXTRA_MIME_TYPE);
- final String displayName = mDisplayName.getText().toString();
- activity.onSaveRequested(mimeType, displayName);
- }
+ performSave();
}
+
};
+ private void performSave() {
+ final DocumentsActivity activity = DocumentsActivity.get(SaveFragment.this);
+ if (mReplaceTarget != null) {
+ activity.onSaveRequested(mReplaceTarget);
+ } else {
+ final String mimeType = getArguments().getString(EXTRA_MIME_TYPE);
+ final String displayName = mDisplayName.getText().toString();
+ activity.onSaveRequested(mimeType, displayName);
+ }
+ }
+
/**
* Set given document as target for in-place writing if user hits save
* without changing the filename. Can be set to {@code null} if user
@@ -139,7 +156,11 @@
}
}
- public void setSaveEnabled(boolean enabled) {
+ public void prepareForDirectory(DocumentInfo cwd) {
+ setSaveEnabled(cwd != null && cwd.isCreateSupported());
+ }
+
+ private void setSaveEnabled(boolean enabled) {
mSave.setEnabled(enabled);
}