First attempt to to refactor fragments handling, state and app lifecycle.
The goal was to simplify code by using android built lifecycle
mechanism, eliminate bugs caused by multiple creation of the fragment,
see the performance impact and give some fundament for refactoring of
fragments and activities in the app.
Search view manager:
* Remove curentSearch from state
* Restore search from saved state (ex. after rotation)
* Rename file to give the better overview of its purpose
Directory fragment:
* Store selection state in a bundle
* Remove double creation of fragment
* Use loaders to reload content when possible
* Keep info about state inside the object
* Refactor available types of fragment to be normal and recents
* Make search type a mode possibly available in all types
* Remove search being invoked from refresh method
* Do search by reloading fragments content instead of recreation as
an example
Other:
* Fix window title maybe
Bug: 26968405, 27101786
Change-Id: I58f36cd0a3e3a6ec98996cd8aac16e10e425e1fe
Pressing backspace pops the user up a directory level if they aren't at
the root directory of the current root.
BUG=27123794
Change-Id: I8f0a88a1194bf8f082d0b057a288a0c3da3068f6
- Turn the DirectoryFragment (DF) and the RootsFragment (RF) into
top-level views, and allow switching between them via the tab key.
- Disallow arrow-key navigation from switching the user between the
DF and RF.
- When nothing is explicitly focused, make navigation keys focus the
DF. This makes it so that if a user opens DocumentsUI and just starts
pressing arrow keys, they'll navigate in the directory listing.
- When restoring focus on the DF and RF, remember the last thing that
was focused, and restore focus on that thing.
BUG=25195767
BUG=25121367
Change-Id: I00e20cbdbe9edfe269fb356440a93ef5d67c5298
(cherry picked from commit 1c9f9222e5)
Move drawer fiddling out of DirectoryFragment into respective
FragmentTuner instance.
Bug: 27084308
Change-Id: Ia13fc2be1442e1a7164c2d67ea6ce4bcfda68bcc
Improved drawer management in reponse to back button presses:
- if drawer is open (and we didn't just open it), close it.
- if at top of root (and we didn't close root) open it.
- there's a timeout on this behavior such that pressing back
a second time within a 1.5 second perior will NOT initiate
the behaviors described above.
Change-Id: I5990848cd3047d9dc985ec10e57ab3a0f99ce79c
Also, reveal the illusion that we're restoring state in Files and Downloads.
Also, define a "PairedTask" class that guards calls to task methods
with checks against isDestroyed. This also let us make all of the tasks
static, so we get much narrower scope and tasks can even be moved to
their own files.
Change-Id: I6a9e8706e1ab1d1f43301e73dd9858a115a6baaf
Since it was almost all redundant (especially the stack stuff).
Ensure "Files" title present on drawer title in Files app.
DocumentsToolBar > DocumentsToolbar to match toolkit naming.
Bug: 26193264
Change-Id: I92c82c66d936aae3ce0f792581daa12898dfadee
The naming was ANIM_UP, ANIM_DOWN, but the animations were from right and
left. Since right and left are flipped for RTL, this CL renames them
with direction agnostic ANIM_ENTER and ANIM_LEAVE.
Change-Id: I8de1603b1baaef3d4ba8fbd593f5e53143698dff
A grab bag also with:
Report Roots while loading (in DEBUG).
Null check DirectoryFragment before calling methods on it.
Bug:26936660,26143397
Change-Id: Ief2c943eb24fb14349bbd9cc4a5fbd670f57d567
A variety of related fixes:
- don't force size enable when browsing from device mounted notifications.
- don't show settings menu item as action (put in overflow).
- add sd card icon (not quite yet used, need to suss that out).
Bug:26880985,26883578,26771127
Change-Id: I36f153c42217f8092f157ded2a756c02525593ab
Now stored in local prefs, not recents DB.
Don't consult preferences for recents from DocumentsActivity.
Bug: 22671255 26689962 26411301
Change-Id: I492d85c450253bce984c929a6dd15d7c31ee6a0b
- Create new categories in MetricsLogger for DocumentsUI events.
- Add logging code to DocumentsUI for launch events and viewing roots.
BUG=26737132
Change-Id: Ib703878a39dd03b57e68a4d5a1d6cf8fe2936c5a
- Move SearchManager out of BaseActivity.
- Refactor usage of onCurrentDirectoryChanged(int anim).
- Cancel search when directory changes.
- Enable testing for cancelling search when directory changes.
- Avoid recreating action bar when only the content of the directory is
changed.
BUG=26495573
Change-Id: I1400090fcb529ad3905018d1640fdb7416542989
HandleRootsChangedTask will be finished after the Activity is destroyed,
though we no longer to be able to change the directory at that time.
BUG=26454277
Change-Id: Ia414134c80d900ef2e6c382fdd9209a154d940af
This is needed to handle removable roots.
1. Add a listener to RootCache.
2. BaseActivity handles roots change and leaves from the current
directory if the current root is removed.
BUG=26316940
Change-Id: I41921fe17782fa1a2d9e58f55ea84326b8f1d3c0
- Move sorting from the back-end (using SortingCursorWrapper) to the the
front-end (in DocumentsAdapter). This makes it such that re-sorting
the directory contents doesn't necessitate a reload.
- Update DirectoryLoaders to just return unsorted results, and rely on
the UI to sort them.
- Remove the (now-unused) SortingCursorWrapper.
- Update Model tests to test sorting.
BUG=26024369
Change-Id: I871cc0e496267d381ae546e0309125d04649415a
Also, add a label to Downloads app, and enabled drag and drop by default.
Cleanued up menu handling in BaseActivity (use switch statement).
Bug: 26033335
Change-Id: I3cef89a4a9f9e30b4e926411e94cf06bc2dc0f8d
- Cleanup: rename the "open copy destination" action to "pick copy
destination", which better reflects what it does.
- Move DocumentsIntent from BaseActivity to Shared.
- Rename ACTION_BROWSE_DOCUMENT_ROOT to ACTION_BROWSE for general browsing.
- Use the new ACTION_BROWSE to open the copy destination when copy
notifications are tapped.
BUG=23137963
Change-Id: I10480b45a16ce716febac5453cb5015d26bb0062
- Move the key listener from BaseActivity into DirectoryFragment, where it
belongs.
- Add code to detect the shift key during keyboard navigation, and
extend the selection in that case.
BUG=20859059
Change-Id: Ia7d3c7d4343f0185873deeaf1a35028a716b6e19
Push save enabling logic into SaveFragment, let it figure it out.
Don't assume DirectoryFragment is present in BaseActivity.
Permit DirectoryFragment#get to return null when not present.
Bug: 24305559
Bug: 24955068
Change-Id: Ib50d674b16ba48dcefb6e5b73055120c3e7c6dba