summaryrefslogtreecommitdiffstats
path: root/packages/DocumentsUI
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Stronger DocumentsProvider contract." into klp-devJeff Sharkey2013-08-2914-463/+172
|\
| * Stronger DocumentsProvider contract.Jeff Sharkey2013-08-2814-463/+172
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* | Import translations. DO NOT MERGEBaligh Uddin2013-08-2814-27/+133
| | | | | | | | | | Change-Id: Ic6b1048f4afaa520fea602ec4367de5e192186bd Auto-generated-cl: translation import
* | Import translations. DO NOT MERGEBaligh Uddin2013-08-2645-2970/+1485
|/ | | | | Change-Id: I7be513f3d5decec282200b01900ce480fcf291cf Auto-generated-cl: translation import
* Merge "Add CancellationSignal support to file operations." into klp-devJeff Sharkey2013-08-231-1/+0
|\
| * Add CancellationSignal support to file operations.Jeff Sharkey2013-08-231-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Since ContentProvider file operations can end up doing substantial network I/O before returning the file, allow clients to cancel their file requests with CancellationSignal. Ideally this would only be needed for openFile(), but ContentResolver heavily relies on openAssetFile() and openTypedAssetFile() for common cases. Also improve documentation to mention reliable ParcelFileDescriptors and encourage developers to move away from "rw" combination modes, since they restrict provider flexibility. Mention more about places where pipes or socket pairs could be returned. Improve DocumentsContract documentation. Bug: 10329944 Change-Id: I49b2825ea433eb051624c4da3b77612fe3ffc99c
* | Import translations. DO NOT MERGEBaligh Uddin2013-08-2359-0/+4645
|/ | | | | Change-Id: Ibbd7d5bc59126933bbcf0370cbdcd590f89d0ad7 Auto-generated-cl: translation import
* Request more documents when EXTRA_HAS_MORE.Jeff Sharkey2013-08-187-80/+122
| | | | | | | | | | | | | | 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
* Management actions, invalidate caches.Jeff Sharkey2013-08-1814-104/+368
| | | | | | | | | | | | | | 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
* Resized thumbnails; async; extend MatrixCursor.Jeff Sharkey2013-08-172-6/+141
| | | | | | | | | | | | | | | | | 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
* Documents management mode; API adjustment.Jeff Sharkey2013-08-159-56/+112
| | | | | | | | | | | | | | | 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
* DocumentsUI handles GET_CONTENT; hinting, errors.Jeff Sharkey2013-08-1510-45/+224
| | | | | | | | | | | | | | 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
* Always include a default DocumentStack.Jeff Sharkey2013-08-081-1/+1
| | | | Change-Id: Idbde1d832ac95c4b3c8bd5cd82b0fa695e0bcb6d
* Better handling of broken storage providers.Jeff Sharkey2013-08-076-23/+71
| | | | | | | | Begin throwing FNFE when storage provider doesn't know about document or when it's having trouble. Treat all provider errors as FNFE and avoid crashing our UI. Change-Id: I946f1ae4125791999464dc4ce494853d5d1c0629
* Settings, replace files, sorting by size, tweaks.Jeff Sharkey2013-08-0717-61/+328
| | | | | | | | | | | | | | | | 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
* Recents in create, uniform item layouts.Jeff Sharkey2013-08-0616-248/+627
| | | | | | | | | | | | | 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
* Storage roots in fragment, sectioned.Jeff Sharkey2013-08-0613-224/+701
| | | | | | | | | | 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
* More recents work; filtering and sorting.Jeff Sharkey2013-08-0510-337/+855
| | | | | | | | | | | | | | | | 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
* Track and persist directory stacks; recents work.Jeff Sharkey2013-08-023-132/+266
| | | | | | | | | | | 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
* Reference docs by ROOT_ID and DOC_ID; recents.Jeff Sharkey2013-08-025-60/+268
| | | | | | | | | | | 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
* XML metadata for storage backend; custom icons.Jeff Sharkey2013-08-014-39/+170
| | | | | | | | | | 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
* Sliding drawer for roots, move sorting, search.Jeff Sharkey2013-07-3114-337/+435
| | | | | | | | 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
* Define storage roots, external GUIDs, creation.Jeff Sharkey2013-07-304-28/+183
| | | | | | | | | | | | | | | | | Allow storage backends to publish multiple roots into the UI, which are defined by a directory GUID, type, and label details. Update external provider to surface a primary external storage root, and switch to burning file path into the returned GUIDs so they remain durable. Added insert, update, and delete support to external provider. Adds file extensions to display names when needed to match MIME type. Add flags for searching and deletion, and extras for Cursor pagination. Add directory creation dialog to UI. Opening a document always gives write access. Change-Id: I9bea1aa0dcde909a5ab86aefeece7451ab920cf1
* Disable documents test UI.Jeff Sharkey2013-07-161-1/+1
| | | | Change-Id: Iae8ef3e751a53a3f7df0a7c5bc666ec75e91d9e9
* Support sorting in storage UI.Jeff Sharkey2013-07-016-53/+279
| | | | | | | | | | 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
* Support multi-select in storage UI.Jeff Sharkey2013-07-0111-16/+208
| | | | | | | | | | 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
* Iterate on storage UI.Jeff Sharkey2013-07-0122-89/+1140
| | | | | | | | Support both grid and list view of documents. Show breadcrumb navigation trail in action bar. Start supporting file and directory creation. Change-Id: I93a973da7b0d4387a57fe719e7bb20944adb0290
* External storage provider, document picker UI.Jeff Sharkey2013-05-015-0/+334
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