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;
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(
case TYPE_RECENT_OPEN:
final RootsCache roots = DocumentsApplication.getRootsCache(context);
return new RecentsLoader(context, roots, state);
+
default:
throw new IllegalStateException("Unknown type " + mType);
}
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 {
((BaseActivity) mContext).setRootsDrawerOpen(true);
}
}
+
+ @Override
+ public boolean enableManagedMode() {
+ return false;
+ }
}
/**
public DownloadsTuner(Context context, State state) {
super(context, state);
+ assert(state.action == ACTION_MANAGE);
}
@Override
@Override
void onModelLoaded(Model model, @ResultType int resultType, boolean isSearch) {}
+
+ @Override
+ public boolean enableManagedMode() {
+ return mState.stack.root != null && mState.stack.root.isDownloads();
+ }
}
/**
((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) {