From 67c76b960c255b0c7f29e589de87c92715854b9b Mon Sep 17 00:00:00 2001 From: Aga Wronska Date: Tue, 22 Mar 2016 17:15:18 -0700 Subject: [PATCH] Bring the change 'Open drawer when showing copy/move destination screen' back after fixing problem with tests. Revert "Revert "Open drawer when showing copy/move destination screen"" This reverts commit 82ae18c87784b5989c1529b97214d63e5d9d3742. Fixed: 27479369 Change-Id: I70f98cf543de889a9a728d8d7233f8e7b077f871 --- .../documentsui/DocumentsActivity.java | 28 ++----------------- .../src/com/android/documentsui/State.java | 6 ++++ .../documentsui/dirlist/FragmentTuner.java | 18 +++++++++++- 3 files changed, 25 insertions(+), 27 deletions(-) diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java index 8a96b97fc440b..5788420a053c6 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java @@ -95,7 +95,7 @@ public class DocumentsActivity extends BaseActivity { } if (mState.restored) { - refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE); + if (DEBUG) Log.d(TAG, "Stack already resolved"); } else { // We set the activity title in AsyncTask.onPostExecute(). // To prevent talkback from reading aloud the default title, we clear it here. @@ -154,30 +154,6 @@ public class DocumentsActivity extends BaseActivity { } } - private void onStackRestored(boolean restored, boolean external) { - // Show drawer when no stack restored, but only when requesting - // non-visual content. However, if we last used an external app, - // drawer is always shown. - - boolean showDrawer = false; - if (!restored) { - showDrawer = true; - } - if (MimePredicate.mimeMatches(MimePredicate.VISUAL_MIMES, mState.acceptMimes)) { - showDrawer = false; - } - if (external && mState.action == ACTION_GET_CONTENT) { - showDrawer = true; - } - if (mState.action == ACTION_PICK_COPY_DESTINATION) { - showDrawer = true; - } - - if (showDrawer) { - mNavigator.revealRootsDrawer(true); - } - } - public void onAppPicked(ResolveInfo info) { final Intent intent = new Intent(getIntent()); intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_FORWARD_RESULT); @@ -515,8 +491,8 @@ public class DocumentsActivity extends BaseActivity { @Override protected void finish(Void result) { mState.restored = true; + mState.external = mExternal; mOwner.refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE); - mOwner.onStackRestored(mRestoredStack, mExternal); } } diff --git a/packages/DocumentsUI/src/com/android/documentsui/State.java b/packages/DocumentsUI/src/com/android/documentsui/State.java index 43468e3cc557f..16b7660e8ba45 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/State.java +++ b/packages/DocumentsUI/src/com/android/documentsui/State.java @@ -85,6 +85,10 @@ public class State implements android.os.Parcelable { public boolean showSize; public boolean localOnly; public boolean restored; + /* + * Indicates handler was an external app, like photos. + */ + public boolean external; // Indicates that a copy operation (or move) includes a directory. // Why? Directory creation isn't supported by some roots (like Downloads). @@ -182,6 +186,7 @@ public class State implements android.os.Parcelable { out.writeInt(showSize ? 1 : 0); out.writeInt(localOnly ? 1 : 0); out.writeInt(restored ? 1 : 0); + out.writeInt(external ? 1 : 0); DurableUtils.writeToParcel(out, stack); out.writeMap(dirState); out.writeParcelable(selectedDocuments, 0); @@ -210,6 +215,7 @@ public class State implements android.os.Parcelable { state.showSize = in.readInt() != 0; state.localOnly = in.readInt() != 0; state.restored = in.readInt() != 0; + state.external = in.readInt() != 0; DurableUtils.readFromParcel(in, state.stack); in.readMap(state.dirState, loader); state.selectedDocuments = in.readParcelable(loader); diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java index 06cb9aa74dab6..faa8e3892f61b 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java +++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java @@ -157,8 +157,24 @@ public abstract class FragmentTuner { @Override void onModelLoaded(Model model, @ResultType int resultType, boolean isSearch) { + boolean showDrawer = false; + + if (MimePredicate.mimeMatches(MimePredicate.VISUAL_MIMES, mState.acceptMimes)) { + showDrawer = false; + } + if (mState.external && mState.action == ACTION_GET_CONTENT) { + showDrawer = true; + } + if (mState.action == ACTION_PICK_COPY_DESTINATION) { + showDrawer = true; + } + // When launched into empty root, open drawer. - if (model.isEmpty() && !mState.hasInitialLocationChanged() && !isSearch) { + if (model.isEmpty()) { + showDrawer = true; + } + + if (showDrawer && !mState.hasInitialLocationChanged() && !isSearch) { // This noops on layouts without drawer, so no need to guard. ((BaseActivity) mContext).setRootsDrawerOpen(true); }