History log of /frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
14a6df7d7626b5e3c739e4dafd11073a471c91a8 01-Jul-2015 Makoto Onuki <omakoto@google.com> If user ejects a storage from details, take user to...
... the storage list view

1. Change to ExternalStorageProvider
When available volumes have changed, it now notifies on
"content://com.android.externalstorage.documents" rather than on
"content://com.android.externalstorage.documents/root/", because it'll also
affect "content://com.android.externalstorage.documents/document/*/children".

2. Change to DocumentUI
- DirectoryLoader now won't crash when a provider returns null.
- DirectoryFragment now closes itself (i.e. emulate a back press) when a load
failed.
- It now correctly reloads contents when a volume is ejected thanks to 1.

Bug 21472170

Change-Id: Icf4bbc2ebb9067313dbbb67083cd4115b0a75c58
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
f491c72e4a0b6d692aaf459a9a45a8c1462e713b 11-Jun-2015 Jeff Sharkey <jsharkey@android.com> Selected count string needs plurals.

Bug: 21717427
Change-Id: Ie0db8ac30244b022ca5838969fb085230bfc4499
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
f8c3f322a276c8f78b8918fddedfe6e011d4e24a 14-Apr-2015 Tomasz Mikolajewski <mtomasz@google.com> Implement retrying copying in case of an error in DocumentsUI.

Change-Id: I9ed1eb624aa30fb7e65d4d424ebd988dfc06d030
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
a56104d74dbbd35b785ec542d8804cf05f70bf21 22-Apr-2015 Steve McKay <smckay@google.com> Merge "Reduce code duplication between DocumentsActivity and StandaloneActivity."
c5979d98cff02117ef1272b1d97982bf5232ef01 22-Apr-2015 Ben Kwa <kenobi@google.com> Disable copying from Recents.

Recents view contains a whole bunch of content aggregated from
potentially many different sources. Dealing with all these in a single
copy operation can be complex, so for simplicity, copying from recents
view is disabled.

BUG=20487641

Change-Id: I6052e62ee0446da7741f13abfed97044e147dd7d
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
ef3e2cf35fbede340d5ff830b410baea8e461a94 21-Apr-2015 Steve McKay <smckay@google.com> Reduce code duplication between DocumentsActivity and StandaloneActivity.

Ensure StandaloneActivity has toolbar management consistent w/ DocumentsActivity.
Introduce a separate SearchManager class since there seemed to be a sufficient body of logic and state to warrant the separation.

Change-Id: I87d9da40095c6de575b124005ca34a8c0b0b4b35
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
cf0e9ace5eecc4457b9bd6e92a3c8391c09654d9 17-Apr-2015 Daichi Hirono <hirono@google.com> DocumentsUI: Save source file list into BaseActivity.State.

This is needed so that the activity does not lost the list on screen rotation.

BUG=20283251

Change-Id: I8f971bab0a0ce2066fd5fea29b98b355cb948ea6
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
d58d954a15fb75d99803a35cda02b661bb6697b5 17-Apr-2015 Ben Kwa <kenobi@google.com> Enable the copy feature.

Change-Id: Ie0636895f2b2fe6550eb68042295daf76bbbd7fe
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
1a2fdb496ec080cd6ff7ed547320dcfa7994abbd 15-Apr-2015 Daichi Hirono <hirono@google.com> DocumentsUI: Move intent related constants to BaseActivity.DocumentsIntent.

BUG=None
Change-Id: I81d367d5f8d727a5fa76bc22b2fe871ae441dbcf
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
9be34298be02783b4cc91cf1784aa0627cf36012 14-Apr-2015 Daichi Hirono <hirono@google.com> DocumentsUI: Filter out downloads root if the source documents include directory.

This is the short term solution for the downloads root, which does not support
directory creation. For the long term solution, we need to add a flag to Root
model to check if the root support directory creation or not.

BUG=20186663

Change-Id: I15c4795892f38e3f968776f732a6f2160ae775fc
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
bbe2292bc671f74d77c9a0e4e0e1d5ea5714d939 10-Apr-2015 Daichi Hirono <hirono@google.com> DocumentsUI: Add new private intent action to select copy destination.

The CL adds INTENT_ACTION_OPEN_COPY_DESTINATION, and implements the behavior to
respond the intent action.

The directory picker:
* filter out read only roots
* return document URI instead of document tree URI
for the intent action.

BUG=b:20146034
Change-Id: I96c565100c3cdaa57cc7abd8cf6d895d148941a7
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
e1a03f8eec2719279037ab348df306764dc45a70 10-Apr-2015 Tomasz Mikolajewski <mtomasz@google.com> Show copy destination when clicking on the copy notification in Documents UI.

Change-Id: I3d955595bc46903c134c0633a6d32663cc2d0c05
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
59d577a518333f4b4514315b6d10e8dba160abcd 12-Apr-2015 Jeff Sharkey <jsharkey@android.com> Browse mode for DocumentsUI, removed volume state.

The existing management mode is too specific, and requires that
storage backends add queryChildDocumentsForManage(), etc. Instead,
to offer more natural browsing support, add a new BROWSE_ROOT intent.

It behaves mostly like MANAGE_ROOT, except that it doesn't mutate
its Uris with setManageMode(), and it shortcuts straight to VIEW on
clicked documents.

It can be launched like this:

$ adb shell am start -a android.provider.action.BROWSE_ROOT
-d content://com.android.externalstorage.documents/root/8405-1DFB
-c android.intent.category.DEFAULT

Also rename a MetricsConstants to make it clearer, and don't
auto-mount all emulated volumes.

Fix bugs around parceling of DiskInfo/VolumeInfo. Method to resolve
the best description for a VolumeInfo, which might need to fall
back to DiskInfo.

Add back "removed" volume state so we send broadcast when a volume
is destroyed, matching the expected public API behavior.

Bug: 19993667
Change-Id: I13aff32c5e11dfc63da44aee9e93a27f4690a43f
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
726cf70fd4e436ba0ba5fff1a42e5c726a9786c5 09-Apr-2015 Ben Kwa <kenobi@google.com> Enable directory copying.

- Enable directory picking for copying.
- Implement recursive copying inside the CopyService.
- Pretty up the notification (use an indeterminate notification while
calculating copy size)
- Do two recursive walks: one to determine the size of the copy job,
and then another to actually copy the files.
- Switch to using ContentProviderClient instances, for better error
detection and handling
- Disable copying from the Recents view.

Change-Id: Ieb38cca80edf84a487547b68f0d6b328fc4d7701
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
ef3f2620b3a755856d70345fc7a90df896985c26 08-Apr-2015 Ben Kwa <kenobi@google.com> Prototype the destination picking.

- Add an intent to open a destination picker, and refactor
DocumentsActivity accordingly.
- Modify CopyService to take a destination for the copy, and to use URIs
and PFDs instead of Files and Streams, for better error handling &
cleanup.

Change-Id: I69dc43823a703674dc29d2215e2df23b33ad7882
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
d99109fca847895233b0bdfafa131ebca8dfe3d5 31-Mar-2015 Ben Kwa <kenobi@google.com> Enable directory selection. Add an IntentService to copy files.

Change-Id: I0bec0224aa1b52766664c23f77d60affec702111
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
3bcc9488a17b25e569c982e9e7596e6d34384c5b 31-Mar-2015 Ben Kwa <kenobi@google.com> Add a "Select All" menu item and code.

Change-Id: I31ed8bff83d8a621a31ea5c2a0d1bb218f53d6e2
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
e934ce6f8430f50d1d22bccd3b341b982f5541ee 25-Mar-2015 Steve McKay <smckay@google.com> Implement a standalone file manager activity.

Change-Id: Iaf86ef416b979cea4ab3890d3a26f09741392c3d
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
cbce47001e15be85b084c36a64c20039a0c4a667 30-Aug-2014 Jeff Sharkey <jsharkey@android.com> Final pass at Material DocumentsUI.

Now with treatment for disabled and selected grid items. Inverts
text and icons in selected drawer items. Follows upstream color
changes to accent color. Disables some verbose logging.

Bug: 15836082, 17281688
Change-Id: I97a1c055a2f1a537388a8f5669147618e9698870
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
669f8e7c70c595964a1c9ca154ac123da84d99a1 09-Aug-2014 Jeff Sharkey <jsharkey@android.com> Move DocumentsUI settings into overflow menu.

Also use different strings based on device type to make clearer.

Bug: 13437894
Change-Id: I4053780de2c7197fb45cc53aee7659e9d0d75c0a
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
c29dd61cbfc9f073239bdce3f4fe397deae2c623 08-Aug-2014 Jeff Sharkey <jsharkey@android.com> More material updates to DocumentsUI.

All assets cut as alpha variants so we apply desired tinting at
runtime. Small script to automatically generate XML resources.

Bug: 15836082, 16658537
Change-Id: I803b3f0bf6f121194a5445fd1c6600fabaf28f60
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
a847d79310320ae8adbedb281123a0f879c2fc6e 30-Jul-2014 Jeff Sharkey <jsharkey@android.com> Light icons for DocumentsUI.

In some cases we want to show light variants. Also tweak drawer
sizes and grid padding.

Bug: 15836082
Change-Id: Ic6459ff0533a7d346c03db5d7deb3d6da42e7649
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
6963148e226dfadc48c36da7db14ee4587a62f6a 28-Jul-2014 Jeff Sharkey <jsharkey@android.com> First pass at Materializing DocumentsUI!

Initial Material asset drop, which still needs some tweaking. Moved
back to framework list item selectors, giving us ripples. Using
accent color overlay for activated items. Align all items to new
Material grid, including insetting list divider and resizing list
items on wide screens.

Fix obscure RTL drawing bug.

Still lots of work left.

Bug: 15836082
Change-Id: I729cc7dcb0271ee62b55d1e036fc28427fc0dd3d
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
22d3990273a1cb5e61360ac42d1d4e6156d762ed 04-Mar-2014 Stefan Wysocki <stefan.wysocki@sonymobile.com> Set ActionMode title to the number of selected files

After change of orientation ActionMode is recreated without previously
set title. It needs to be updated in onCreateActionMode callback.

Change-Id: If5f36e8ad6d1b5cf04ed242611fd037969d73517
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
33819318f61224cdda45e5e9a70dc9cdb9f33911 29-Oct-2013 Jeff Sharkey <jsharkey@android.com> Suppress OperationCanceledException logging.

These exceptions are normal when an app has cancelled an outstanding
thumbnail request.

Bug: 11385378
Change-Id: I8aed5721b447cda5baf447ac7afd627aa1062863
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
db5ef125007644daa94aeaf1bd8637f4e0095e94 26-Oct-2013 Jeff Sharkey <jsharkey@android.com> Use inotify to update DocumentsUI.

While user is actively looking at a directory, subscribe to inotify
events and notify of content changes to trigger requeries. Reference
count the observers, since multiple cursors are regularly open during
requeries.

Fix leaking cursors on activity rotation; crazy loader ID generation
is no longer needed.

Bug: 10999396
Change-Id: Iddeb08a056fee80c93df8499874705bcd213a1e2
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
b3d42635aafacd80b1e1d257338ea6abb93d22c3 23-Oct-2013 Jeff Sharkey <jsharkey@android.com> Treat document thumbnails as preemptable.

When a more important request comes along, preempt all outstanding
thumbnail requests.

Bug: 11317901
Change-Id: I164fc8d804bb9c471e6da3f8127228043b3ca482
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
567fdd9fbaae4a3f6f8dc123769771881a50ed70 07-Oct-2013 Jeff Sharkey <jsharkey@android.com> Merge "When launched into empty recents, show drawer." into klp-dev
a82c2e24bc226c123075331cdaafb171b3b07b85 07-Oct-2013 Jeff Sharkey <jsharkey@android.com> When launched into empty recents, show drawer.

Pull out drawer to give users more context about meaningful places
to navigate to. Also fix bug where restored roots weren't being
highlighted.

Bug: 10852518
Change-Id: Id294f6923477ca4dc505c4b0a21a5bdf8b722cf4
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
ca25db0cb3d6b9686a42c9cb99d90dc095f20cd8 04-Oct-2013 Jeff Sharkey <jsharkey@android.com> Custom pressed states, fixed column sizes.

Use custom pressed state assets. Use fixed column sizes to prevent
truncating of long dates on small screens.

Also tear down any active CAB when switching fragments.

Bug: 11032418, 11028212
Change-Id: I2bf3dc3f693319b4b55cc901ed460f60faceba35
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
d01571e6d4e1c403534e19142720530d324eac9b 02-Oct-2013 Jeff Sharkey <jsharkey@android.com> Isolate calls to each remote DocumentsProvider.

All background work is going through AsyncTasks, which uses a shared
thread pool. Even with the new ContentProviderClient logic to detect
ANRs, the UI can still appear to be unresponsive for 20 seconds, even
if the user attempted to switch to a different backend. In the worst
case, a backlog of thumbnail requests would end up wedging Loaders
for a long time, since they all share the same THREAD_POOL_EXECUTOR.

This change isolates calls to each provider onto their own thread,
which they're free to wedge and recover from over time.

It also means we no longer need a dedicated thread pool for recents
loading, and can use a simpler Semaphore instead.

Disables thumbnails in recents on svelte devices.

Bug: 10993301, 11014856
Change-Id: I7f8a5bbb5f64437e006cb2c48b7e854136d5c38c
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
7aa7601c09ab5d87cc15a0ed9a8f511d494a4cbc 30-Sep-2013 Jeff Sharkey <jsharkey@android.com> Detect wedged ContentProviders, treat as ANR.

All ContentProvider calls are currently blocking, making it hard for
an app to recover when a remote provider is wedged. This change adds
hidden support to ContentProviderClient to timeout remote calls,
treating them as ANRs. This behavior is disabled by default.

Update DocumentsUI to use a 20 second timeout whenever interacting
with a storage provider.

Bug: 10993301, 10819461, 10852518
Change-Id: I10fa3c425c6a7225fff9cb7a0a07659028230cd3
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
6efba22ce510352bb84910d6efc42fecafd31ed7 28-Sep-2013 Jeff Sharkey <jsharkey@android.com> New roots UX, async, performance, docs.

Yet another iteration from UX on how roots should be ordered. Since
we no longer categorize by type, remove from public API. Updated
asset drop with new dividers.

Update public API docs to be explicit about required columns. Hide
flags and columns that aren't required for third-party apps.

Move remainder of potentially blocking work to AsyncTasks, including
creating directories, picked root resolution, and creation of new
documents once picked.

Improve performance of layouts by removing baseline alignment and
reduce hierarchy depth. Set alpha on ImageViews directly to avoid
offscreen rendering hit.

Limit returned recents to 45 days. Show load in recents when still
waiting for backends. Show empty message when no recents stacks to
create from. Use unique key when saving recent stacks.

Bug: 10941423, 10819454, 10964412, 10960718
Change-Id: I08cf589dcda7e203acf67928f4d30322ae36ee94
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
3d52dc9c3a2fd9997322ce5e28607b3f7e9bfcf7 27-Sep-2013 Jeff Sharkey <jsharkey@android.com> Make directories always enabled, for realz.

Bug: 10946731
Change-Id: I3eb132c53e47f31d1d1723ed2262823b54b1fce0
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
2a030b05a978281147df4d1cc4f12bc8d61c0729 26-Sep-2013 Jeff Sharkey <jsharkey@android.com> Directories are always enabled; update assets.

Fix bug where item enabled state depended on FLAG_SUPPORTS_WRITE;
directories are now always enabled. Also unifies enabled testing.

Bug: 10903210, 10946731
Change-Id: I241533d273dfe4a2146bb322a8bd93066bf4ef55
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
deffadeb7485e8660ecce12822e259d96fa06dce 24-Sep-2013 Jeff Sharkey <jsharkey@android.com> Freshen restored stacks, more UX bug fixes.

When restoring a persisted stack, such as last location or a location
where save occurred, freshen the DocumentStack to get the latest
details from backend, and ensure the path is still valid.

Filter Recent directories in create mode based on roots allowed by
incoming request.

Remember when user last picked an external app, and open drawer next
time user launches for GET_CONTENT.

Fix state list drawable ordering, and avoid clobbering Drawable
callback when wrapping in InsetDrawable; tricksy hobbitses!

Make grid items smaller to always fit two columns on phones. Draw
grid items all the way to screen edge; don't clip to padding. Better
error message when folder creation failed. Show Recents in grid mode
when picking any visual content, not just images.

Bug: 10846100, 10903211, 10898993, 10892808, 10892058, 10892009, 10885012
Change-Id: Ia0f88d911abc6ea03645d6fd3e04271c21d5936a
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
b180a65d41adc731cbff1536c7ede15174bc08e1 23-Sep-2013 Jeff Sharkey <jsharkey@android.com> Allow saving to Downloads.

Uses new column to mark writability. Also filter file selection in
create mode to only allow writable files.

Bug: 10667164, 10893268
Change-Id: I90f74efbb7ac634fbdb3cc02a904a96a434d3605
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
1feeddf518d31a7ff5d28000a631857442cd7161 22-Sep-2013 Jeff Sharkey <jsharkey@android.com> Latest UX asset drop, grid padding.

Bring in latest asset drop. Apply grid padding programmatically
instead of waiting for asset. Remove alpha from directory animation.

Update save footer background to match spec.

Bug: 10700025
Change-Id: I8eef08f36d04767b78e91b23f72bdbebfbb02f58
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
a9ce049db87259e302e2368d2a4a1c11a94fd831 20-Sep-2013 Jeff Sharkey <jsharkey@android.com> Load RootInfo in background, invalidation.

Move all RootInfo queries to background threads to avoid janking
the UI. Update passes happen on spawed task, which swaps out updated
cache results when finished. Support partial updates when only a
single package/authority has changed. Watch for change notifications
for roots, since flags can change over time.

Ignore stopped packages when in background, but query them for roots
when launching any picker UI.

Optimize management launches by treating as one-shot requests that
don't need to wait for all RootInfo.

Bug: 10600454, 10745490
Change-Id: Ibc7b15688ef6b41bd7e9dd0d7564b501e60e49a9
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
563ee0fbe99c234f3364044cb762a75abbbaa797 19-Sep-2013 Jeff Sharkey <jsharkey@android.com> Latest UX asset drop.

Darker action bar overflow icon, larger grid-mode directory icon,
icon for music albums, generic file icon.

Fix bug that allowed null MIME types to be picked.

Bug: 10700025
Change-Id: I2089678eaf793bc3c7214b21c9de5f38429ebb0f
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
e20a3acdc2d52c7eeb76940206145b3c419394a6 19-Sep-2013 Jeff Sharkey <jsharkey@android.com> Save directory state and animate.

Save scroll position and restore when rotating or going up the
directory stack. Also show directory animations when navigating
the directory stack.

Bug: 10417201
Change-Id: Ia2c508debc2bffffe6306eb9078afefef259dfe2
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
f6db154975ef575479ba4ab59d80bcf592288252 13-Sep-2013 Jeff Sharkey <jsharkey@android.com> More UX updates around picking images.

When picking images or videos, hide the titles in recents, since the
thumbnails should speak for themselves. Also respect new flag that
allows a directory to request their titles be hidden.

Show directory icon hint in grid mode when showing a thumbnail, to
remind user it's a directory.

Filter directories out of recents. Hide most action bar icons on
phones, even when room. Only show drawer on first launch. Hide most
drawer headers to match spec.

Bug: 10710331
Change-Id: I0ef1973ddd62750f57345336388366eda1449720
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
3e1189b3590aefb65a2af720ae2ba959bbd4188d 13-Sep-2013 Jeff Sharkey <jsharkey@android.com> Move search to roots; Documents root; hide empty.

Documents searches now happen root-wide, instead of only under a
subdirectory. Updates abstract class and flags to match. Add flag
for a root to indicate it's empty, and hide empty roots in UI unless
creating.

Define "Documents" public directory and storage backend to contain
files.

Bug: 10712057, 10710865, 10710758
Change-Id: I8716367568969f9cb1d83927b2bf5a7013809350
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
88f322c3115e85bb96fb46f9192b5daecd472c64 13-Sep-2013 Jeff Sharkey <jsharkey@android.com> DocumentsUI tablet support.

Shows as a faux dialog on larger tablets, since the normal dialog
themes from framework don't support action bars. Instead, this hacks
itself to look like a dialog with an InsetDrawable. Detects touches
in dim area to dismiss dialog.

Show all action bar icons on tablets, and roots panel is always
visible with a different shadow. Show settings in dialog. Allow mode
switches in recents.

Bug: 10329832
Change-Id: Id02982ce7b0d4694962d32f8d5286fdfcc207208
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
ed903213e6d3d75d497498c9cf95aa8e74277a9e 11-Sep-2013 Jeff Sharkey <jsharkey@android.com> More tweaks to match UX spec.

Fixed text colors to match spec. Behold The Greyening! Centered
loader spinner in grid mode. Show multiple lines in status messages.

Add string descriptions. Fix bug where toggling size setting didn't
kick a UI rebind.

Bug: 10510022
Change-Id: Icb41ebeb4de0fed8c04fc6cf5213af1587b72641
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
4ec973925fc2cd18f9ec0d0ca5af588564fded27 10-Sep-2013 Jeff Sharkey <jsharkey@android.com> More UX work for thumbnails, search, management.

Hide non-finished downloads from normal picker UI, but keep them
around in management mode. Uses a Uri query parameter and a hidden
API on DocumentsProvider.

Scale thumbnails to fit viewport, always show MIME icon while waiting
on thumbnails, and crossfade between them. Cancel thumbnail tasks
when views are recycled.

Filter directories out of search results for now. Also leave sort
ordering from backend intact, since it's custom ranking. Fix
SearchView interaction to dismiss properly and restore across
orientation and drawer state changes.

Hide most actions when drawer is open. Invalidate RootInfo cache
when locale changes. Apply sort ordering when showing recent create
directories. Hide recent summary string when icon is enough for user
to disambiguate.

Bug: 10667184, 10665663
Change-Id: I331d3272a08c497f88dc659d9e112231cb35aa69
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
fb3445c9b31c7f8401d6eec0606dabee366c8aad 10-Sep-2013 Jeff Sharkey <jsharkey@android.com> Sort order is sticky for session, back leaves.

Instead of persisting sort order per-directory, the order is now
sticky for that session. Any user selected sort order takes
precedence over an ordering hinted by a backend.

When a restored DocumentStack is untouched, the back key now leaves
the dialog, instead of popping from the restored stack.

Persist list/grid mode changes async.

Bug: 10659604, 10672973
Change-Id: I9f022a081c014537447c9c2af10e19d8cd9566aa
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
3f4c205fd3110345241e690f2a2e7c1b477eac76 10-Sep-2013 Jeff Sharkey <jsharkey@android.com> Disabled states, more UX work, bug fixes.

Fix drawable state to correctly show dimmed disabled state. Update
disabled state for all children to grey out text.

Block multi-selection of documents not matching MIME filter. Load
thumbnails in parallel. Show thumbnails in list mode based on MIME
type to match spec.

Give each footer a unique view type to avoid recycler crashes.

Show breadcrumb icons in recent create paths. Fix timestamp bug when
querying/updating recent paths.

Make ContentProviderClient.closeQuietly() really be quiet.

Bug: 10668364, 10510022, 10668701, 10534224, 10667726
Change-Id: I3c705412fb211519f15ad41a273a7533b878e9e5
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
d182bb641f228b2d28527a6aa86075f6358ab838 07-Sep-2013 Jeff Sharkey <jsharkey@android.com> Remember mode and sort on per-directory basis.

Persist the last user-selected list/grid mode and sort order for
each directory. Remembered user choice always overrides provider
hinting.

Filter out recent documents that don't match requested MIME type, and
show recents in grid mode when picking images. Hide mode and sort
order in recents.

Add hinting flag for backend to indicate a directory would like to be
sorted by last modified. Include explicit root in DocumentStack and
clearly mark derived fields.

Bug: 10392047, 10608506
Change-Id: I2dd3a0e4112852ebf87e7dbb08b3781c86587dcf
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
28c05ee8931cecf4c51c470e0043d30196010c49 06-Sep-2013 Jeff Sharkey <jsharkey@android.com> Item layout tweaking, hook up more assets.

Update layouts for items in both list and grid mode to reflect
latest UX. Use new card background in grid mode, and apply gradient
treatment over thumbnails.

Visibly mark currently selected root.

Bug: 10510022
Change-Id: I36b290d7082b5cdfd7b3167df7d976032bc01bd6
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
6d97d3c1a2ebac4e3f32c7e5bc134864ace1c17f 06-Sep-2013 Jeff Sharkey <jsharkey@android.com> Another asset drop, provider icons, tests.

Latest asset update, including provider icons which are treated as
special cases for now instead of checking into separate apps. Add
tests for MIME type matching of roots. Remove unused XML.

Bug: 10510022
Change-Id: Id567a9e06ba241f60ac011823e550253c6c797fb
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
0b14db3cf5eac43736462999337c9a3efdc1ac81 05-Sep-2013 Jeff Sharkey <jsharkey@android.com> Asset drop, icons for common MIME types.

Bring in latest assets from UX. Map common MIME types to specific
icons.

Bug: 10510022
Change-Id: I01ea8749ca5515a04efcbc15eb0c8cbb43e5e7ad
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
954be0232655d316bc5decbbd35579af902c75c2 04-Sep-2013 Jeff Sharkey <jsharkey@android.com> Show loading, error, and info messages as footers.

A provider can include extras in their Cursors to indicate that
loading is ongoing, or include an error or informational message,
which are now shown in footer views.

Fix registration to always get change notifications.

Test provider that verifies common provider behavior of holding
a reference to "cloud" resources that are released by GC when the
remote Cursor is closed. Also used to validate Recents behavior
for slow providers.

Bug: 10599268
Change-Id: I331c31058dbb80261e7d279b851197c65ac87e32
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
ded77187ef53341765fcab8e29cda94810fc2ca5 03-Sep-2013 Jeff Sharkey <jsharkey@android.com> Updated documents UX around action bar.

Change action bar to match current design; drawer is always available
and navigation dropdown is used to interact with current traversal
path in hierarchy. On first launch, show recents with drawer
expanded. On subsequent launches, resume from last location with
drawer closed. If last location root isn't applicable, then behave
like initial launch. Move sort order into action bar submenu.

Delete documents using contract. Use unstable provider when
inflating DocumentInfo from Uri.

Bug: 10330219, 10510851
Change-Id: I6e94637d70ebca156a6c5d50272e878156d0dd62
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
348ad6866b91afa4d59d45df533ef88094c74d13 03-Sep-2013 Jeff Sharkey <jsharkey@android.com> Filter roots based on incoming request.

When incoming request is for local-only content, or for ACTION_CREATE,
only include roots advertise those features.

Filters roots based on the allowed MIME types and the supported types
advertised by each root. This supports displaying Images and Audio
roots only when requesting those content types. Applies the same
filter when deciding which roots to query for recents.

Fixes advanced filtering instead of limiting to just devices. Update
sorting so that Recent always appears first. Add testing support for
LOCAL_ONLY.

Bug: 10597317, 10526535
Change-Id: Ic5ccf475c4fe93fd52b29388d369d7f6915c0c42
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
251097b3789632000ccdaf7fb7d66a82ff37d882 03-Sep-2013 Jeff Sharkey <jsharkey@android.com> New recents behavior to match spec.

Updated behavior queries each documents root for recently modified
documents. It uses a new variant of DirectoryLoader which limits the
maximum number of parallel queries to relieve memory pressure. When
first started, it waits up to 500ms for everyone to finish, then
publishes whatever results are ready, and then refreshes results as
each straggler finishes.

New RootCursorWrapper that always blends in authority and rootId
columns, which are used for binding root details from blended cursors.

Bug: 10593596, 10329994
Change-Id: Icc0d4a2f1b6166edc72f78a4c88f444eeba6f2f0
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
b51331116eb2ebbc41aaf69142916f9af6dffdd5 02-Sep-2013 Jeff Sharkey <jsharkey@android.com> Instance state, fix sharing, Durable objects.

Remember instance state across configuration changes, and enable
rotation. This remembers current modes and in-progress traversals.

Always finish action modes after launching an action. Fix sharing
by always putting Uris in extras, and always wrap in a chooser. Find
common MIME types when sharing multiple documents. Fix downloads
launching by following directory MIME type change.

Introduce "Durable" which is like Parcelable, but can be used for
both byte[] storage and Parcel transport. Make both DocumentInfo
and DocumentStack durable.

Disable recents until new behavior is implemented.

Bug: 10460236, 10446265, 10533674, 10456344, 10456702
Change-Id: I4eaf2b0b4cde611c69a1e7b5f1586f6b02019b27
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
5dfb345df7cb17b3a7e534a80a270b4afe7934da 01-Sep-2013 Jeff Sharkey <jsharkey@android.com> Use Cursors directly when binding documents.

Instead of creating a DocumentInfo for every list item, bind the
adapter against Cursor directly.

Create new SortingCursorWrapper which performs sorting at query time
and keeps a O(1) mapping from sorted to unsorted positions in the
underlying Cursor.

Suppress extra loader passes that had been kicked off. Use unstable
provider when querying to guard against broken providers.

Bug: 10567506, 10510851
Change-Id: I535814da6b17c38de04a1175e0afcc78c6b966ce
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
ae9b51bfa313c51a31af30875a71255d7b6d2e61 01-Sep-2013 Jeff Sharkey <jsharkey@android.com> Refactoring of DocumentsContract.

Combines related columns and constants onto the same class so they
are easier to discover. Move back to surfacing roots with columns
so they are consistent with documents.

Advanced roots are represented with a flag instead of distinct
types. Flags to indicate supporting of well-known media types,
instead of arbitrary an MIME filter. Reintroduce well-formed rootId
to support recents.

Always use the expanded version of "documents" in constants, methods,
and argument names.

Refactor DocumentProvider method names to clearly distinguish if
a single item or multiple could be returned, and of which type. Add
documentation to clearly define which methods have already been
overridden.

Bug: 10567506, 10567557
Change-Id: I981f26ab82f2b520a19aa1ce66f659de50d7fac0
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
aeb16e2435f9975b9fa1fc4b747796647a21292e 28-Aug-2013 Jeff Sharkey <jsharkey@android.com> Stronger DocumentsProvider contract.

Using a contract class requires that a provider implement it exactly
with little help. This change introduces a DocumentsProvider abstract
class that provides a client-side implementation of the contract that
greatly reduces developer burden, and improves correctness.

This also moves to first-class DocumentRoot objects, and moves calls
with complex side effects to be ContentProvider.call() invocations,
offering more granular permission control over Uri operations that
shouldn't be available through Uri grants.

This new design also relaxes the requirement that root information be
burned into every Uri. Migrate ExternalDocumentsProvider and
DocumentsUI to adopt new API.

Bug: 10497206
Change-Id: I6f2b3f519bfd62a9d693223ea5628a971ce2e743
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
b448660a227f93d7bd5c5d019a21745e67c2f54d 19-Aug-2013 Jeff Sharkey <jsharkey@android.com> Request more documents when EXTRA_HAS_MORE.

Implement EXTRA_HAS_MORE and EXTRA_REQUEST_MORE contract with
document providers. Providers can include EXTRA_HAS_MORE when
additional data is available with additional cost, such as a network
request.

Listen to content changes based on returned cursor instead of
original Uri. Include a test backend to exercise. UX still under
development.

Bug: 10350207
Change-Id: Iaa8954df55a1a1c0aa96eb8a4fd288e12c2fbb01
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
4eb407a832b7d6a2d62a535e5cab70b00a0bc8ed 19-Aug-2013 Jeff Sharkey <jsharkey@android.com> Management actions, invalidate caches.

In manage mode, touching launches a VIEW intent for the file. Also
adds actions for sharing and deleting.

Move roots and thumbnail caches into Application object, and flush
cache when thumbnail size changes. Listen for package changes and
broadcasts that should invalidate our roots cache.

Pick default grid/list mode based on provider hint.

Bug: 10329983, 10330210, 10378834, 10330069
Change-Id: I75afb1c58ab71bb9d55852b1059da7257a376248
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
9d0843df7e3984293dc4ab6ee2f9502e898b63aa 07-May-2013 Jeff Sharkey <jsharkey@android.com> Resized thumbnails; async; extend MatrixCursor.

When requesting thumbnails, check if their dimensions are larger
than requested, and downscale to avoid memory pressure. Load them
async and with LruCache.

Extend MatrixCursor so that RowBuilder can offer() columns without
requiring they know the projection map. This makes it easier to
respond to query() calls, where the remote side controls the
projection map. Use it to handle custom projections in external
storage backend.

Update date/time formatting to match spec.

Bug: 10333418, 10331689
Change-Id: I7e947a8e8068af8a39b55e6766b3241de4f3fc16
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
a5599ef636e37cb0b6474349936999be1afe6987 16-Aug-2013 Jeff Sharkey <jsharkey@android.com> Documents management mode; API adjustment.

Create documents manage mode to support Downloads and transient
storage devices. Locks user into requested backend root, and forces
file sizes on and sorting by last modified.

Separate API constants for Documents versus Roots, and give concrete
MIME types for roots.

Treat null sizes as unknown. Documents are always enabled in list
so that divider is drawn. Mark external storage file as writable.

Bug: 10329983, 10332993, 10332952
Change-Id: I05f4fdf5b04041a38e1ba7fb30202a3b0c615bf6
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
54ca29a5b94c2edf461c5433825d4ae17469fd7c 15-Aug-2013 Jeff Sharkey <jsharkey@android.com> DocumentsUI handles GET_CONTENT; hinting, errors.

Document browser now takes over all GET_CONTENT requests that request
openable Uris. It shows both storage backends and includes other apps
that respond to GET_CONTENT. Only grants transient read permissions.

Better guarding against throwing storage backends. Send sort order
and local-only hinting to backends.

Require that OPEN/CREATE_DOC users include openable category.

Bug: 10330112, 10329976, 10340741, 10331689, 10329971
Change-Id: Ieb8768a6d71201816046f4a4c48832061a313c28
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
9fb567b59112f99e64e0bff6f343188331bad28d 08-Aug-2013 Jeff Sharkey <jsharkey@android.com> Settings, replace files, sorting by size, tweaks.

Add settings to show file sizes and advanced storage devices, both
disabled by default. Add sorting by size when enabled in settings.

Always show all documents, but only allow selection when they match
MIME filter. When creating, select entire filename on focus. When
creating, treat selected documents as replacement targets using that
exact Uri unless display name is changed.

Show available bytes for device roots. Show empty text label in
empty directories. Split grid backend and details into two separate
lines. Fix path label ordering when rendering recent directories.

Change-Id: I44c62e8adb8ca7d4355510a13d1ba975196a2d29
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
b156f4bf8cdfe475a7116b627d84a281e1a281b7 07-Aug-2013 Jeff Sharkey <jsharkey@android.com> Recents in create, uniform item layouts.

Show recent directories in a separate fragment, and save as serialized
versions of new DirectoryStack. Cleaner behavior around recents and
search, instead of treating them as pseudo-Documents.

More uniform item layouts between list and grid, including both date
and size information, and originating storage root in recents. Avoid
clashing directory loaders by assigning unique numbers. Promote
list/grid switching up into activity.

Change-Id: I9a93460b896067ca036d7e772eeabde31face2e1
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
66516697a29cf00d93893a1011d3befc7c1ee37f 06-Aug-2013 Jeff Sharkey <jsharkey@android.com> Storage roots in fragment, sectioned.

Move storage roots into a fragment, since it's not a drawer on
tablets. Cluster and sort roots when displaying. SectionedListAdapter
to make clustered roots easier to manage. Add docs for root types.

Move roots cache into separate class to make it easier to share.

Change-Id: Ia0b92eade059e816324641f600c08026c0e268c9
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
ef7184a1aa0be5d496a5cb495a0f9e11f342af44 06-Aug-2013 Jeff Sharkey <jsharkey@android.com> More recents work; filtering and sorting.

Update DirectoryFragment to render List<Document>, making it more
general purpose. Feed it documents either from a backend Cursor or
after resolving fields from a recents Cursor. Start in recents when
no persisted stack available. Synthesize a root for recents.

Local directory filtering and sorting using predicates and
comparators, all performed on background thread. Introduce
UriDerivativeLoader which handles ContentObserver updates while
producing a derivative work of a Cursor.

Split data model classes into separate files.

Change-Id: Idb88b4ee22c58c8e508328e678877f7e4c978533
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
dc2963aecaf38bf53d6de82957412a486049c207 03-Aug-2013 Jeff Sharkey <jsharkey@android.com> Track and persist directory stacks; recents work.

Move to manual tracking of directory navigation stack so we have Uri
data to persist, instead of opaque fragment backstack. Remember
directory stacks across launches on a per-app basis.

Start recording recently opened and created files. Uniform Uri
parameter extraction utility methods in contract.

Change-Id: I79ed30ee10272bf7c53d339e797639c993f649bb
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
92d7e697a864a3e18bef4ef256bb3eb339a66b4e 02-Aug-2013 Jeff Sharkey <jsharkey@android.com> Reference docs by ROOT_ID and DOC_ID; recents.

The same document may be present with different sematics under
multiple storage roots, so always reference using both ROOT_ID and
DOC_ID. This enables backends to revoke permissions for an entire
root, such as when an account is removed.

Start building provider to remember recently accessed documents.

Change-Id: I75befa2e61393dec12fcc7fd27f631fcddae46fa
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
7e258b31e70464bb6d80b8b42f0cef8e4417bd6a 01-Aug-2013 Jeff Sharkey <jsharkey@android.com> XML metadata for storage backend; custom icons.

Introduce XML metadata for storage backends, used to indicate if
custom roots should be queried, and provide any custom MIME type
icons inside that backend.

Parse metadata and resolve custom icons in UI.

Change-Id: Iec026c0b10845edff7a345d9389691ddf2c87a0e
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
bc2971d2499f5bf5534ced7296ece630ca902738 01-Aug-2013 Jeff Sharkey <jsharkey@android.com> Sliding drawer for roots, move sorting, search.

Move backend root exploration into sliding drawer, and adjust action
bar when moving between modes. Moves sorting into action bar spinner
instead of separate dialog. Also add initial search support.

Change-Id: I70189911ba56ae6bd93d5c503a8600acd6d6c0c5
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
1482789374fb8da3abea8f6f4f272a67205b95db 02-Jul-2013 Jeff Sharkey <jsharkey@android.com> Support sorting in storage UI.

Extract mode information into DisplayState which is now consistent
across directory traversal. Use grid mode by default when working
with images. Dialog to switch sort order.

Add testing UI to exercise until we have real clients.

Change-Id: Ic423584d4559732fb3d2aea9e0406b57d43f6e6d
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
be8b12e687bd10a526b1f54c2d8a52abdad15d85 02-Jul-2013 Jeff Sharkey <jsharkey@android.com> Support multi-select in storage UI.

When caller has specified that multiple documents are okay, enable
multi-select action mode. Currently only allows document selection,
not directories. Returns multiple documents through ClipData.

Fix bug where GridView was stuck with 2 columns on tablets.

Change-Id: Id49b29a86330639b56fa116d37e7f0d874980c5b
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
54e55b740fef1be654c3959aee41ef5ddfa61293 01-Jul-2013 Jeff Sharkey <jsharkey@android.com> Iterate on storage UI.

Support both grid and list view of documents. Show breadcrumb
navigation trail in action bar. Start supporting file and directory
creation.

Change-Id: I93a973da7b0d4387a57fe719e7bb20944adb0290
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
9e0036ed7d3260d79cc5f9ffd8e3bbe760699924 27-Apr-2013 Jeff Sharkey <jsharkey@android.com> External storage provider, document picker UI.

Continuing to flesh out storage backends by adding an external
storage document backend. Still rough, but it can traverse files
and directories.

Early pass at OPEN/CREATE_DOC picker UI, which offers to traverse
any known storage backends. Supports opening subdirectories and
returning a picked file.

Change-Id: Idc3554036b3816a93d9b465ee8a620746859d2ae
/frameworks/base/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java