summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/DocumentsUI/res/layout/drawer_layout.xml2
-rw-r--r--packages/DocumentsUI/res/layout/fragment_directory.xml4
-rw-r--r--packages/DocumentsUI/res/layout/item_dir_grid.xml2
-rw-r--r--packages/DocumentsUI/res/layout/item_doc_grid.xml2
-rw-r--r--packages/DocumentsUI/res/values-ldrtl/config.xml (renamed from packages/DocumentsUI/res/values-ldrtl/dimens.xml)0
-rw-r--r--packages/DocumentsUI/res/values-sw720dp-land/config.xml19
-rw-r--r--packages/DocumentsUI/res/values-sw720dp-land/dimens.xml2
-rw-r--r--packages/DocumentsUI/res/values/colors.xml11
-rw-r--r--packages/DocumentsUI/res/values/config.xml2
-rw-r--r--packages/DocumentsUI/res/values/dimens.xml15
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/RecentsLoader.java (renamed from packages/DocumentsUI/src/com/android/documentsui/RecentLoader.java)143
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java4
-rw-r--r--packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java14
13 files changed, 117 insertions, 103 deletions
diff --git a/packages/DocumentsUI/res/layout/drawer_layout.xml b/packages/DocumentsUI/res/layout/drawer_layout.xml
index e3def054fa0d..065102b18075 100644
--- a/packages/DocumentsUI/res/layout/drawer_layout.xml
+++ b/packages/DocumentsUI/res/layout/drawer_layout.xml
@@ -61,7 +61,7 @@
android:layout_gravity="start"
android:orientation="vertical"
android:elevation="16dp"
- android:background="@color/window_background">
+ android:background="@color/drawer_background">
<Toolbar
android:id="@+id/roots_toolbar"
diff --git a/packages/DocumentsUI/res/layout/fragment_directory.xml b/packages/DocumentsUI/res/layout/fragment_directory.xml
index 0d336f91ee3a..03c6a833ca7d 100644
--- a/packages/DocumentsUI/res/layout/fragment_directory.xml
+++ b/packages/DocumentsUI/res/layout/fragment_directory.xml
@@ -17,7 +17,7 @@
<com.android.documentsui.DirectoryView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="@color/window_background"
+ android:background="@color/directory_background"
android:outlineProvider="bounds"
android:elevation="4dp"
android:orientation="vertical">
@@ -45,7 +45,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
- android:background="@color/window_background"
+ android:background="@color/directory_background"
android:focusable="true"
android:focusableInTouchMode="true"
android:visibility="gone">
diff --git a/packages/DocumentsUI/res/layout/item_dir_grid.xml b/packages/DocumentsUI/res/layout/item_dir_grid.xml
index b0331bec6e49..d866145dc4a6 100644
--- a/packages/DocumentsUI/res/layout/item_dir_grid.xml
+++ b/packages/DocumentsUI/res/layout/item_dir_grid.xml
@@ -20,7 +20,7 @@
android:layout_height="wrap_content"
android:layout_margin="@dimen/grid_item_margin"
android:background="@color/item_doc_background"
- android:elevation="5dp"
+ android:elevation="@dimen/grid_item_elevation"
android:focusable="true" >
<LinearLayout
diff --git a/packages/DocumentsUI/res/layout/item_doc_grid.xml b/packages/DocumentsUI/res/layout/item_doc_grid.xml
index dd02d1ca0051..1890f2fd1089 100644
--- a/packages/DocumentsUI/res/layout/item_doc_grid.xml
+++ b/packages/DocumentsUI/res/layout/item_doc_grid.xml
@@ -19,7 +19,7 @@
android:layout_height="wrap_content"
android:layout_margin="@dimen/grid_item_margin"
android:background="@color/item_doc_background"
- android:elevation="5dp"
+ android:elevation="@dimen/grid_item_elevation"
android:focusable="true">
<!-- Main item thumbnail. Comprised of two overlapping images, the
diff --git a/packages/DocumentsUI/res/values-ldrtl/dimens.xml b/packages/DocumentsUI/res/values-ldrtl/config.xml
index 22f8131474c4..22f8131474c4 100644
--- a/packages/DocumentsUI/res/values-ldrtl/dimens.xml
+++ b/packages/DocumentsUI/res/values-ldrtl/config.xml
diff --git a/packages/DocumentsUI/res/values-sw720dp-land/config.xml b/packages/DocumentsUI/res/values-sw720dp-land/config.xml
new file mode 100644
index 000000000000..8d9526d62dff
--- /dev/null
+++ b/packages/DocumentsUI/res/values-sw720dp-land/config.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2016 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<resources>
+ <bool name="always_show_summary">true</bool>
+</resources>
diff --git a/packages/DocumentsUI/res/values-sw720dp-land/dimens.xml b/packages/DocumentsUI/res/values-sw720dp-land/dimens.xml
index c9dee8d2c174..fa11244141f7 100644
--- a/packages/DocumentsUI/res/values-sw720dp-land/dimens.xml
+++ b/packages/DocumentsUI/res/values-sw720dp-land/dimens.xml
@@ -15,8 +15,6 @@
-->
<resources>
- <bool name="always_show_summary">true</bool>
-
<dimen name="list_item_height">64dp</dimen>
<dimen name="list_item_padding">24dp</dimen>
diff --git a/packages/DocumentsUI/res/values/colors.xml b/packages/DocumentsUI/res/values/colors.xml
index c868d340e901..f7f7cc064a66 100644
--- a/packages/DocumentsUI/res/values/colors.xml
+++ b/packages/DocumentsUI/res/values/colors.xml
@@ -21,6 +21,11 @@
else that needs to manually declare a background matching the "default"
app background (e.g. the drawer overlay). -->
<color name="window_background">#fff1f1f1</color>
+ <color name="drawer_background">#fff1f1f1</color>
+ <color name="directory_background">#fff7f7f7</color>
+ <color name="item_doc_background">#fffafafa</color>
+ <color name="item_doc_background_selected">#ffe0f2f1</color>
+ <color name="menu_search_background">#ff676f74</color>
<color name="primary_dark">@*android:color/primary_dark_material_dark</color>
<color name="primary">@*android:color/material_blue_grey_900</color>
@@ -29,10 +34,4 @@
<color name="band_select_background">#88ffffff</color>
<color name="band_select_border">#44000000</color>
-
- <color name="item_doc_background">#fffafafa</color>
- <color name="item_doc_background_selected">#ffe0f2f1</color>
-
- <color name="menu_search_background">#ff676f74</color>
-
</resources>
diff --git a/packages/DocumentsUI/res/values/config.xml b/packages/DocumentsUI/res/values/config.xml
index e8d8c8ebfda1..07498a026ac1 100644
--- a/packages/DocumentsUI/res/values/config.xml
+++ b/packages/DocumentsUI/res/values/config.xml
@@ -20,4 +20,6 @@
<!-- Intentionally unset. Vendors should set this in an overlay. -->
<string name="trusted_quick_viewer_package"></string>
+ <bool name="list_divider_inset_left">true</bool>
+ <bool name="always_show_summary">false</bool>
</resources>
diff --git a/packages/DocumentsUI/res/values/dimens.xml b/packages/DocumentsUI/res/values/dimens.xml
index 5adb165667c4..9fc8a73874da 100644
--- a/packages/DocumentsUI/res/values/dimens.xml
+++ b/packages/DocumentsUI/res/values/dimens.xml
@@ -17,37 +17,24 @@
<resources>
<dimen name="grid_container_padding">10dp</dimen>
<dimen name="list_container_padding">0dp</dimen>
-
<dimen name="icon_size">40dp</dimen>
<dimen name="root_icon_size">24dp</dimen>
<dimen name="root_icon_margin">0dp</dimen>
<dimen name="check_icon_size">30dp</dimen>
-
<dimen name="list_item_thumbnail_size">40dp</dimen>
<dimen name="grid_item_icon_size">30dp</dimen>
-
<dimen name="progress_bar_height">4dp</dimen>
-
<dimen name="grid_width">152dp</dimen>
<dimen name="grid_height">176dp</dimen>
-
<dimen name="grid_item_width">152dp</dimen>
<dimen name="grid_item_height">176dp</dimen>
<dimen name="grid_item_margin">4dp</dimen>
-
<dimen name="grid_padding_horiz">4dp</dimen>
<dimen name="grid_padding_vert">4dp</dimen>
-
<dimen name="list_item_height">72dp</dimen>
<dimen name="list_item_padding">16dp</dimen>
-
<dimen name="list_divider_inset">72dp</dimen>
- <bool name="list_divider_inset_left">true</bool>
-
- <bool name="always_show_summary">false</bool>
-
<dimen name="dir_elevation">8dp</dimen>
-
<dimen name="drag_shadow_size">120dp</dimen>
-
+ <dimen name="grid_item_elevation">2dp</dimen>
</resources>
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RecentLoader.java b/packages/DocumentsUI/src/com/android/documentsui/RecentsLoader.java
index 0ee54e650db9..cebc9b05679e 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/RecentLoader.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/RecentsLoader.java
@@ -31,12 +31,12 @@ import android.net.Uri;
import android.os.Bundle;
import android.provider.DocumentsContract;
import android.provider.DocumentsContract.Document;
-import android.provider.DocumentsContract.Root;
import android.text.format.DateUtils;
import android.util.Log;
import com.android.documentsui.model.RootInfo;
import com.android.internal.annotations.GuardedBy;
+
import com.google.common.util.concurrent.AbstractFuture;
import libcore.io.IoUtils;
@@ -52,7 +52,7 @@ import java.util.concurrent.ExecutionException;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
-public class RecentLoader extends AsyncTaskLoader<DirectoryResult> {
+public class RecentsLoader extends AsyncTaskLoader<DirectoryResult> {
// TODO: clean up cursor ownership so background thread doesn't traverse
// previously returned cursors for filtering/sorting; this currently races
// with the UI thread.
@@ -80,7 +80,7 @@ public class RecentLoader extends AsyncTaskLoader<DirectoryResult> {
private final State mState;
@GuardedBy("mTasks")
- private final HashMap<RootInfo, RecentTask> mTasks = new HashMap<>();
+ private final HashMap<RootInfo, RecentsTask> mTasks = new HashMap<>();
private final int mSortOrder = State.SORT_ORDER_LAST_MODIFIED;
@@ -89,69 +89,7 @@ public class RecentLoader extends AsyncTaskLoader<DirectoryResult> {
private DirectoryResult mResult;
- // TODO: create better transfer of ownership around cursor to ensure its
- // closed in all edge cases.
-
- public class RecentTask extends AbstractFuture<Cursor> implements Runnable, Closeable {
- public final String authority;
- public final String rootId;
-
- private Cursor mWithRoot;
-
- public RecentTask(String authority, String rootId) {
- this.authority = authority;
- this.rootId = rootId;
- }
-
- @Override
- public void run() {
- if (isCancelled()) return;
-
- try {
- mQueryPermits.acquire();
- } catch (InterruptedException e) {
- return;
- }
-
- try {
- runInternal();
- } finally {
- mQueryPermits.release();
- }
- }
-
- public void runInternal() {
- ContentProviderClient client = null;
- try {
- client = DocumentsApplication.acquireUnstableProviderOrThrow(
- getContext().getContentResolver(), authority);
-
- final Uri uri = DocumentsContract.buildRecentDocumentsUri(authority, rootId);
- final Cursor cursor = client.query(
- uri, null, null, null, DirectoryLoader.getQuerySortOrder(mSortOrder));
- mWithRoot = new RootCursorWrapper(authority, rootId, cursor, MAX_DOCS_FROM_ROOT);
-
- } catch (Exception e) {
- Log.w(TAG, "Failed to load " + authority + ", " + rootId, e);
- } finally {
- ContentProviderClient.releaseQuietly(client);
- }
-
- set(mWithRoot);
-
- mFirstPassLatch.countDown();
- if (mFirstPassDone) {
- onContentChanged();
- }
- }
-
- @Override
- public void close() throws IOException {
- IoUtils.closeQuietly(mWithRoot);
- }
- }
-
- public RecentLoader(Context context, RootsCache roots, State state) {
+ public RecentsLoader(Context context, RootsCache roots, State state) {
super(context);
mRoots = roots;
mState = state;
@@ -178,14 +116,13 @@ public class RecentLoader extends AsyncTaskLoader<DirectoryResult> {
final Collection<RootInfo> roots = mRoots.getMatchingRootsBlocking(mState);
for (RootInfo root : roots) {
- if ((root.flags & Root.FLAG_SUPPORTS_RECENTS) != 0) {
- final RecentTask task = new RecentTask(root.authority, root.rootId);
- mTasks.put(root, task);
+ if (root.supportsRecents()) {
+ mTasks.put(root, new RecentsTask(root.authority, root.rootId));
}
}
mFirstPassLatch = new CountDownLatch(mTasks.size());
- for (RecentTask task : mTasks.values()) {
+ for (RecentsTask task : mTasks.values()) {
ProviderExecutor.forAuthority(task.authority).execute(task);
}
@@ -202,7 +139,7 @@ public class RecentLoader extends AsyncTaskLoader<DirectoryResult> {
// Collect all finished tasks
boolean allDone = true;
List<Cursor> cursors = new ArrayList<>();
- for (RecentTask task : mTasks.values()) {
+ for (RecentsTask task : mTasks.values()) {
if (task.isDone()) {
try {
final Cursor cursor = task.get();
@@ -303,7 +240,7 @@ public class RecentLoader extends AsyncTaskLoader<DirectoryResult> {
onStopLoading();
synchronized (mTasks) {
- for (RecentTask task : mTasks.values()) {
+ for (RecentsTask task : mTasks.values()) {
IoUtils.closeQuietly(task);
}
}
@@ -311,4 +248,66 @@ public class RecentLoader extends AsyncTaskLoader<DirectoryResult> {
IoUtils.closeQuietly(mResult);
mResult = null;
}
+
+ // TODO: create better transfer of ownership around cursor to ensure its
+ // closed in all edge cases.
+
+ public class RecentsTask extends AbstractFuture<Cursor> implements Runnable, Closeable {
+ public final String authority;
+ public final String rootId;
+
+ private Cursor mWithRoot;
+
+ public RecentsTask(String authority, String rootId) {
+ this.authority = authority;
+ this.rootId = rootId;
+ }
+
+ @Override
+ public void run() {
+ if (isCancelled()) return;
+
+ try {
+ mQueryPermits.acquire();
+ } catch (InterruptedException e) {
+ return;
+ }
+
+ try {
+ runInternal();
+ } finally {
+ mQueryPermits.release();
+ }
+ }
+
+ public void runInternal() {
+ ContentProviderClient client = null;
+ try {
+ client = DocumentsApplication.acquireUnstableProviderOrThrow(
+ getContext().getContentResolver(), authority);
+
+ final Uri uri = DocumentsContract.buildRecentDocumentsUri(authority, rootId);
+ final Cursor cursor = client.query(
+ uri, null, null, null, DirectoryLoader.getQuerySortOrder(mSortOrder));
+ mWithRoot = new RootCursorWrapper(authority, rootId, cursor, MAX_DOCS_FROM_ROOT);
+
+ } catch (Exception e) {
+ Log.w(TAG, "Failed to load " + authority + ", " + rootId, e);
+ } finally {
+ ContentProviderClient.releaseQuietly(client);
+ }
+
+ set(mWithRoot);
+
+ mFirstPassLatch.countDown();
+ if (mFirstPassDone) {
+ onContentChanged();
+ }
+ }
+
+ @Override
+ public void close() throws IOException {
+ IoUtils.closeQuietly(mWithRoot);
+ }
+ }
}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
index 236fa947dec3..07515ef6da22 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/dirlist/DirectoryFragment.java
@@ -88,7 +88,7 @@ import com.android.documentsui.Menus;
import com.android.documentsui.MessageBar;
import com.android.documentsui.MimePredicate;
import com.android.documentsui.R;
-import com.android.documentsui.RecentLoader;
+import com.android.documentsui.RecentsLoader;
import com.android.documentsui.RootsCache;
import com.android.documentsui.Shared;
import com.android.documentsui.Snackbars;
@@ -320,7 +320,7 @@ public class DirectoryFragment extends Fragment implements DocumentsAdapter.Envi
context, mType, root, doc, contentsUri, state.userSortOrder);
case TYPE_RECENT_OPEN:
final RootsCache roots = DocumentsApplication.getRootsCache(context);
- return new RecentLoader(context, roots, state);
+ return new RecentsLoader(context, roots, state);
default:
throw new IllegalStateException("Unknown type " + mType);
}
diff --git a/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java b/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java
index 8cbbb6c3fa39..3f4a1df2c5b6 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/model/RootInfo.java
@@ -241,8 +241,10 @@ public class RootInfo implements Durable, Parcelable {
}
public boolean isLibrary() {
- return derivedType == TYPE_IMAGES || derivedType == TYPE_VIDEO || derivedType == TYPE_AUDIO
- || derivedType == TYPE_RECENTS || derivedType == TYPE_DOWNLOADS;
+ return derivedType == TYPE_IMAGES
+ || derivedType == TYPE_VIDEO
+ || derivedType == TYPE_AUDIO
+ || derivedType == TYPE_RECENTS;
}
public boolean hasSettings() {
@@ -257,6 +259,14 @@ public class RootInfo implements Durable, Parcelable {
return (flags & Root.FLAG_SUPPORTS_CREATE) != 0;
}
+ public boolean supportsRecents() {
+ return (flags & Root.FLAG_SUPPORTS_RECENTS) != 0;
+ }
+
+ public boolean supportsSearch() {
+ return (flags & Root.FLAG_SUPPORTS_SEARCH) != 0;
+ }
+
public boolean isAdvanced() {
return (flags & Root.FLAG_ADVANCED) != 0;
}