From 75fe6bca49cc62d9b505fc845ef7ba33a4a03d39 Mon Sep 17 00:00:00 2001 From: Steve McKay Date: Mon, 7 Mar 2016 11:51:31 -0800 Subject: [PATCH] Show active downloads in Files app Downloads dir. And permit users to peek into zip files stored in Downloads. But dont' show active downloads in pickers. Bug: 26759955 Change-Id: Ib425a79488e953c981ddadeb01a37f6e1d8a8285 --- .../documentsui/dirlist/DirectoryFragment.java | 4 ++-- .../android/documentsui/dirlist/FragmentTuner.java | 28 ++++++++++++++++++++++ 2 files changed, 30 insertions(+), 2 deletions(-) diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java index 83838d3328fb..19679231c130 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java +++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java @@ -17,7 +17,6 @@ package com.android.documentsui.dirlist; import static com.android.documentsui.Shared.DEBUG; -import static com.android.documentsui.State.ACTION_MANAGE; import static com.android.documentsui.State.MODE_GRID; import static com.android.documentsui.State.MODE_LIST; import static com.android.documentsui.State.SORT_ORDER_UNKNOWN; @@ -1535,7 +1534,7 @@ public class DirectoryFragment extends Fragment mRoot.authority, mRoot.rootId, mQuery) : DocumentsContract.buildChildDocumentsUri( mDocument.authority, mDocument.documentId); - if (state.action == ACTION_MANAGE) { + if (mTuner.enableManagedMode()) { contentsUri = DocumentsContract.setManageMode(contentsUri); } return new DirectoryLoader( @@ -1544,6 +1543,7 @@ public class DirectoryFragment extends Fragment case TYPE_RECENT_OPEN: final RootsCache roots = DocumentsApplication.getRootsCache(context); return new RecentsLoader(context, roots, state); + default: throw new IllegalStateException("Unknown type " + mType); } diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java index f99ec85c358b..adaa850b0950 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java +++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/FragmentTuner.java @@ -82,6 +82,12 @@ public abstract class FragmentTuner { abstract void onModelLoaded(Model model, @ResultType int resultType, boolean isSearch); /** + * When managed mode is enabled, active downloads will be visible in the UI. + * Presumably this should only be true when in the downloads directory. + */ + abstract boolean enableManagedMode(); + + /** * Provides support for Platform specific specializations of DirectoryFragment. */ private static final class DocumentsTuner extends FragmentTuner { @@ -157,6 +163,11 @@ public abstract class FragmentTuner { ((BaseActivity) mContext).setRootsDrawerOpen(true); } } + + @Override + public boolean enableManagedMode() { + return false; + } } /** @@ -166,6 +177,7 @@ public abstract class FragmentTuner { public DownloadsTuner(Context context, State state) { super(context, state); + assert(state.action == ACTION_MANAGE); } @Override @@ -192,6 +204,11 @@ public abstract class FragmentTuner { @Override void onModelLoaded(Model model, @ResultType int resultType, boolean isSearch) {} + + @Override + public boolean enableManagedMode() { + return mState.stack.root != null && mState.stack.root.isDownloads(); + } } /** @@ -233,6 +250,17 @@ public abstract class FragmentTuner { ((BaseActivity) mContext).setRootsDrawerOpen(true); } } + + @Override + public boolean enableManagedMode() { + // When in downloads top level directory, we also show active downloads. + // And while we don't allow folders in Downloads, we do allow Zip files in + // downloads that themselves can be opened and viewed like directories. + // This method helps us understand when to kick in on those special behaviors. + return mState.stack.root != null + && mState.stack.root.isDownloads() + && mState.stack.size() == 1; + } } private static boolean isDirectory(String mimeType) { -- 2.11.0