Merge "Revert "Open drawer when showing copy/move destination screen"" into nyc-dev

This commit is contained in:
Daichi Hirono
2016-03-22 10:46:43 +00:00
committed by Android (Google) Code Review
3 changed files with 30 additions and 29 deletions

View File

@@ -95,7 +95,7 @@ public class DocumentsActivity extends BaseActivity {
} }
if (mState.restored) { if (mState.restored) {
if (DEBUG) Log.d(TAG, "Stack already resolved"); refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE);
} else { } else {
// We set the activity title in AsyncTask.onPostExecute(). // We set the activity title in AsyncTask.onPostExecute().
// To prevent talkback from reading aloud the default title, we clear it here. // To prevent talkback from reading aloud the default title, we clear it here.
@@ -108,7 +108,9 @@ public class DocumentsActivity extends BaseActivity {
// we restore the stack as last used from that app. // we restore the stack as last used from that app.
if (mState.action == ACTION_PICK_COPY_DESTINATION) { if (mState.action == ACTION_PICK_COPY_DESTINATION) {
if (DEBUG) Log.d(TAG, "Launching directly into Home directory."); if (DEBUG) Log.d(TAG, "Launching directly into Home directory.");
loadRoot(DocumentsContract.buildHomeUri()); Uri homeUri = DocumentsContract.buildHomeUri();
new LoadRootTask(this, homeUri).executeOnExecutor(
ProviderExecutor.forAuthority(homeUri.getAuthority()));
} else { } else {
if (DEBUG) Log.d(TAG, "Attempting to load last used stack for calling package."); if (DEBUG) Log.d(TAG, "Attempting to load last used stack for calling package.");
new LoadLastUsedStackTask(this).execute(); new LoadLastUsedStackTask(this).execute();
@@ -154,6 +156,30 @@ 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) { public void onAppPicked(ResolveInfo info) {
final Intent intent = new Intent(getIntent()); final Intent intent = new Intent(getIntent());
intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_FORWARD_RESULT); intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_FORWARD_RESULT);
@@ -491,8 +517,8 @@ public class DocumentsActivity extends BaseActivity {
@Override @Override
protected void finish(Void result) { protected void finish(Void result) {
mState.restored = true; mState.restored = true;
mState.external = mExternal;
mOwner.refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE); mOwner.refreshCurrentRootAndDirectory(AnimationView.ANIM_NONE);
mOwner.onStackRestored(mRestoredStack, mExternal);
} }
} }

View File

@@ -85,10 +85,6 @@ public class State implements android.os.Parcelable {
public boolean showSize; public boolean showSize;
public boolean localOnly; public boolean localOnly;
public boolean restored; public boolean restored;
/*
* Indicates handler was an external app, like photos.
*/
public boolean external;
// Indicates that a copy operation (or move) includes a directory. // Indicates that a copy operation (or move) includes a directory.
// Why? Directory creation isn't supported by some roots (like Downloads). // Why? Directory creation isn't supported by some roots (like Downloads).
@@ -186,7 +182,6 @@ public class State implements android.os.Parcelable {
out.writeInt(showSize ? 1 : 0); out.writeInt(showSize ? 1 : 0);
out.writeInt(localOnly ? 1 : 0); out.writeInt(localOnly ? 1 : 0);
out.writeInt(restored ? 1 : 0); out.writeInt(restored ? 1 : 0);
out.writeInt(external ? 1 : 0);
DurableUtils.writeToParcel(out, stack); DurableUtils.writeToParcel(out, stack);
out.writeMap(dirState); out.writeMap(dirState);
out.writeParcelable(selectedDocuments, 0); out.writeParcelable(selectedDocuments, 0);
@@ -215,7 +210,6 @@ public class State implements android.os.Parcelable {
state.showSize = in.readInt() != 0; state.showSize = in.readInt() != 0;
state.localOnly = in.readInt() != 0; state.localOnly = in.readInt() != 0;
state.restored = in.readInt() != 0; state.restored = in.readInt() != 0;
state.external = in.readInt() != 0;
DurableUtils.readFromParcel(in, state.stack); DurableUtils.readFromParcel(in, state.stack);
in.readMap(state.dirState, loader); in.readMap(state.dirState, loader);
state.selectedDocuments = in.readParcelable(loader); state.selectedDocuments = in.readParcelable(loader);

View File

@@ -157,27 +157,8 @@ public abstract class FragmentTuner {
@Override @Override
void onModelLoaded(Model model, @ResultType int resultType, boolean isSearch) { void onModelLoaded(Model model, @ResultType int resultType, boolean isSearch) {
boolean showDrawer = false;
if (mState.restored) {
showDrawer = true;
}
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. // When launched into empty root, open drawer.
if (model.isEmpty()) { if (model.isEmpty() && !mState.hasInitialLocationChanged() && !isSearch) {
showDrawer = true;
}
if (showDrawer && !mState.hasInitialLocationChanged() && !isSearch) {
// This noops on layouts without drawer, so no need to guard. // This noops on layouts without drawer, so no need to guard.
((BaseActivity) mContext).setRootsDrawerOpen(true); ((BaseActivity) mContext).setRootsDrawerOpen(true);
} }