From 39acff5a36ab0540981cdae3027ea1a45fe040e5 Mon Sep 17 00:00:00 2001 From: Tomasz Mikolajewski Date: Wed, 25 Nov 2015 13:01:18 +0900 Subject: [PATCH] Wire support for archives to DocumentsUI. Bug: 20176812 Change-Id: I8220afa2f53b07aa842bf6ac24fcc62afd4e2617 --- .../src/com/android/documentsui/BaseActivity.java | 5 +++-- .../src/com/android/documentsui/DocumentsActivity.java | 4 ++-- .../src/com/android/documentsui/DownloadsActivity.java | 4 ++-- .../src/com/android/documentsui/FilesActivity.java | 4 ++-- .../src/com/android/documentsui/model/DocumentInfo.java | 8 ++++++++ 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java index 0f250168cc754..edf384e76504c 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java @@ -300,10 +300,11 @@ public abstract class BaseActivity extends Activity { void onDirectoryCreated(DocumentInfo doc) { checkArgument(doc.isDirectory()); - openDirectory(doc); + openContainerDocument(doc); } - void openDirectory(DocumentInfo doc) { + void openContainerDocument(DocumentInfo doc) { + checkArgument(doc.isContainer()); mState.stack.push(doc); mState.stackTouched = true; onCurrentDirectoryChanged(ANIM_DOWN); diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java index 4f4649c6cf8b7..8754f688aaabf 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java @@ -421,8 +421,8 @@ public class DocumentsActivity extends BaseActivity { @Override public void onDocumentPicked(DocumentInfo doc, DocumentContext context) { final FragmentManager fm = getFragmentManager(); - if (doc.isDirectory()) { - openDirectory(doc); + if (doc.isContainer()) { + openContainerDocument(doc); } else if (mState.action == ACTION_OPEN || mState.action == ACTION_GET_CONTENT) { // Explicit file picked, return new ExistingFinishTask(doc.derivedUri).executeOnExecutor(getExecutorForCurrentDirectory()); diff --git a/packages/DocumentsUI/src/com/android/documentsui/DownloadsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DownloadsActivity.java index f224343f1ed75..cccbbc86407d3 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/DownloadsActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/DownloadsActivity.java @@ -185,8 +185,8 @@ public class DownloadsActivity extends BaseActivity { @Override public void onDocumentPicked(DocumentInfo doc, DocumentContext context) { final FragmentManager fm = getFragmentManager(); - if (doc.isDirectory()) { - openDirectory(doc); + if (doc.isContainer()) { + openContainerDocument(doc); } else { // First try managing the document; we expect manager to filter // based on authority, so we don't grant. diff --git a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java index 99d0cf4e50ef0..bf44013c59a98 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java +++ b/packages/DocumentsUI/src/com/android/documentsui/FilesActivity.java @@ -311,8 +311,8 @@ public class FilesActivity extends BaseActivity { @Override public void onDocumentPicked(DocumentInfo doc, @Nullable DocumentContext siblings) { - if (doc.isDirectory()) { - openDirectory(doc); + if (doc.isContainer()) { + openContainerDocument(doc); } else { openDocument(doc, siblings); } diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java b/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java index dfdc705a16c8d..69b574dd85e5b 100644 --- a/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java +++ b/packages/DocumentsUI/src/com/android/documentsui/model/DocumentInfo.java @@ -243,6 +243,14 @@ public class DocumentInfo implements Durable, Parcelable { return (flags & Document.FLAG_DIR_HIDE_GRID_TITLES) != 0; } + public boolean isArchive() { + return (flags & Document.FLAG_ARCHIVE) != 0; + } + + public boolean isContainer() { + return isDirectory() || isArchive(); + } + public int hashCode() { return derivedUri.hashCode() + mimeType.hashCode(); }