diff options
author | Daichi Hirono <hirono@google.com> | 2015-04-15 04:30:09 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-04-15 04:30:10 +0000 |
commit | c96e494ac73e11dfd34a2df39c80d673474c4d44 (patch) | |
tree | dbcea6fb2a6ff8e4bdc503083badae1f4f086eca /packages/DocumentsUI/src | |
parent | e26bd2c361bf506830350ef3e2ba2029355a2216 (diff) | |
parent | 9be34298be02783b4cc91cf1784aa0627cf36012 (diff) | |
download | frameworks_base-c96e494ac73e11dfd34a2df39c80d673474c4d44.zip frameworks_base-c96e494ac73e11dfd34a2df39c80d673474c4d44.tar.gz frameworks_base-c96e494ac73e11dfd34a2df39c80d673474c4d44.tar.bz2 |
Merge "DocumentsUI: Filter out downloads root if the source documents include directory."
Diffstat (limited to 'packages/DocumentsUI/src')
4 files changed, 22 insertions, 0 deletions
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java index bd17401..842d9fc 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java @@ -37,6 +37,12 @@ abstract class BaseActivity extends Activity { public static String ACTION_OPEN_COPY_DESTINATION_STRING = "com.android.documentsui.OPEN_COPY_DESTINATION"; + /** + * Extra boolean flag for ACTION_OPEN_COPY_DESTINATION_STRING, which + * specifies if the destination directory needs to create new directory or not. + */ + public static String EXTRA_DIRECTORY_COPY = "com.android.documentsui.DIRECTORY_COPY"; + public abstract State getDisplayState(); public abstract RootInfo getCurrentRoot(); public abstract void onStateChanged(); @@ -77,6 +83,7 @@ abstract class BaseActivity extends Activity { public boolean showAdvanced = false; public boolean stackTouched = false; public boolean restored = false; + public boolean directoryCopy = false; /** Current user navigation stack; empty implies recents. */ public DocumentStack stack = new DocumentStack(); diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java index 61fcad2..909e2e5 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java @@ -687,6 +687,14 @@ public class DirectoryFragment extends Fragment { Uri.EMPTY, getActivity(), DocumentsActivity.class); + boolean directoryCopy = false; + for (DocumentInfo info : docs) { + if (Document.MIME_TYPE_DIR.equals(info.mimeType)) { + directoryCopy = true; + break; + } + } + intent.putExtra(BaseActivity.EXTRA_DIRECTORY_COPY, directoryCopy); startActivityForResult(intent, REQUEST_COPY_DESTINATION); } diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java index b6e0711..71ed17e 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java @@ -265,6 +265,10 @@ public class DocumentsActivity extends BaseActivity { } else { mState.showSize = LocalPreferences.getDisplayFileSize(this); } + if (mState.action == ACTION_OPEN_COPY_DESTINATION) { + mState.directoryCopy = intent.getBooleanExtra( + BaseActivity.EXTRA_DIRECTORY_COPY, false); + } } private class RestoreRootTask extends AsyncTask<Void, Void, RootInfo> { diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java index d2267b1..27e8f20 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java +++ b/packages/DocumentsUI/src/com/android/documentsui/RootsCache.java @@ -367,6 +367,9 @@ public class RootsCache { if (!state.showAdvanced && advanced) continue; // Exclude non-local devices when local only if (state.localOnly && !localOnly) continue; + // Exclude downloads roots that don't support directory creation + // TODO: Add flag to check the root supports directory creation or not. + if (state.directoryCopy && root.isDownloads()) continue; // Only show empty roots when creating if ((state.action != State.ACTION_CREATE || state.action != State.ACTION_OPEN_TREE || |