Commit Graph

82 Commits

Author SHA1 Message Date
Aga Wronska
893390bd58 Directory fragment refactoring.
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
2016-02-22 09:36:17 -08:00
Ben Kwa
b4cbd54ea9 Merge "Implement backspace support." into nyc-dev 2016-02-18 22:57:18 +00:00
Ben Kwa
359bbebb6d Implement backspace support.
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
2016-02-18 14:30:12 -08:00
Steve McKay
c265117881 Don't read raw root from State, use getCurrentRoot
Bug: 27213606
Change-Id: I9abf42672d914041ab710bd09886c0c4034b85b6
2016-02-17 11:22:50 -08:00
Tomasz Mikolajewski
3d988a969f Provide siblings in a sorted orders in DocumentsUI.
Bug: 27192158
Change-Id: Idefd2ba3027cd4630fcd2aefade9e6b4952e7125
2016-02-16 17:18:34 +09:00
Ben Kwa
2036dad877 Introduce ChromeOS-style keyboard navigation.
- 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)
2016-02-11 14:16:04 +00:00
Steve McKay
30ff5dd2c8 Merge "Automatically open roots pane if default dir is empty." into nyc-dev 2016-02-10 02:28:13 +00:00
Steve McKay
40d5d9d827 Merge "Don't apply fancy back logic when drawer is not present." into nyc-dev 2016-02-10 02:00:38 +00:00
Steve McKay
aa15dae22d Automatically open roots pane if default dir is empty.
Move drawer fiddling out of DirectoryFragment into respective
    FragmentTuner instance.

Bug: 27084308
Change-Id: Ia13fc2be1442e1a7164c2d67ea6ce4bcfda68bcc
2016-02-09 16:25:44 -08:00
Steve McKay
9146ac608c Don't apply fancy back logic when drawer is not present.
Add test coverage. Booya!

Bug: 27078649
Change-Id: Id2ce53009ee212b3af8d143091859d30e2bc76b1
2016-02-09 14:47:50 -08:00
Aga Wronska
e436f94f0e Go to root from child directory when root tapped.
Bug: 27060001

Change-Id: Iabe1f9f2c986904a4d827e74cf29b3de55e74f90
(cherry picked from commit 5652d175fe)
2016-02-08 23:38:07 +00:00
Steve McKay
f873769fba Move create folder and sort to overflow menu, cleanup back behavior.
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
2016-02-05 08:46:10 -08:00
Steve McKay
8ac5bfddd2 Merge "Simplify State initialization w/ better semantics + improved Task security." 2016-02-05 04:16:37 +00:00
Steve McKay
95cd85ad38 Simplify State initialization w/ better semantics + improved Task security.
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
2016-02-04 18:30:29 -08:00
Tomasz Mikolajewski
5bfdf2b39a Remove DirectoryContainerView class from DocumentsUI.
Removed and it works as before, I guess it was some workaround for a bug
in the past.

Change-Id: I859c995940ad04ac028aea1727a81358ca7fda1b
2016-02-05 09:50:02 +09:00
Steve McKay
c67aacc76f Merge "Normalize toolbar management." 2016-02-04 04:20:55 +00:00
Steve McKay
1f264a8a1a Normalize toolbar management.
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
2016-02-03 17:59:06 -08:00
Aga Wronska
d8c25f8908 Merge "Stop current root reloading when it is clicked again" 2016-02-03 22:55:14 +00:00
Aga Wronska
45f75e2a81 Stop current root reloading when it is clicked again
Bug: 25079217
Change-Id: I5d32be06d9eda4e5aced965030cce863e8a1965d
2016-02-03 10:09:35 -08:00
Tomasz Mikolajewski
e3fe9d79c0 Rename confusing animation naming.
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
2016-02-03 17:18:04 +09:00
Tomasz Mikolajewski
42bd98f426 Fix directory/root opening animations when launching DocumentsUI.
We should only show an opening animation, when back button would get us
back.

Change-Id: I9b3f43592a87c1c13944d382b7201b5727fd08ee
2016-02-03 16:41:37 +09:00
Tomasz Mikolajewski
a6120da1e3 Open zip files nicely from the Download app with Files app.
Bug: 26321218
Change-Id: I8a7a7e914d290ea1b6f424ee5fbd38a4b09c362d
2016-02-03 11:56:54 +09:00
Steve McKay
3ce95951bd Show view mode button in action bar on Downloads.
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
2016-02-02 14:51:04 -08:00
Steve McKay
efa1761776 Decouple SD card from ADVANCED storage toggle.
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
2016-02-02 09:28:30 -08:00
Aga Wronska
f6ede47b78 Merge "Hide action bar search icon in directories that do not support search operation." 2016-01-30 22:01:50 +00:00
Aga Wronska
91c7fb3b83 Hide action bar search icon in directories that do not support search operation.
Bug:26593318
Change-Id: Ibb8945e6eba508aaaa55b1f666ac434f30b2aaaa
2016-01-29 18:47:23 -08:00
Steve McKay
957c742f1f Merge "Clear selection after copy and when back is pressed." 2016-01-29 19:21:24 +00:00
Steve McKay
cbee544a53 Clear selection after copy and when back is pressed.
Change-Id: I5240c825016b9e21bc147591b72bb969eb765597
2016-01-28 15:30:36 -08:00
Steve McKay
5fe5c458dc Files always visible, same for new window menu.
Remove "productivity_device" bit.

Change-Id: I28ee3e210fc5f8c367d45a74edab0e04667ddd5e
2016-01-28 11:43:08 -08:00
Steve McKay
3eb2d07fd3 Remember view mode by root.
Now stored in local prefs, not recents DB.
Don't consult preferences for recents from DocumentsActivity.

Bug: 22671255 26689962 26411301
Change-Id: I492d85c450253bce984c929a6dd15d7c31ee6a0b
2016-01-27 16:28:28 -08:00
Ben Kwa
723799858a Add MetricsLogger calls to DocumentsUI.
- Create new categories in MetricsLogger for DocumentsUI events.
- Add logging code to DocumentsUI for launch events and viewing roots.

BUG=26737132

Change-Id: Ib703878a39dd03b57e68a4d5a1d6cf8fe2936c5a
2016-01-26 14:15:42 -08:00
Aga Wronska
3b327ef9f9 Add support for renaming documents
- Add rename dialog
- Add rename menu option
- Enable rename menu option only when renaming supported
- Rename files and directories
- Present error message if renaming fails

Bug: 20493815
Change-Id: Ic7386d14e3876655fb19245b9a90b4c67a4febb4
2016-01-22 13:36:40 -08:00
Aga Wronska
f6a31d319f Refactor SearchManager:
- 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
2016-01-19 13:29:09 -08:00
Daichi Hirono
9297a0fb2a Merge "Check isDestroyed after finishing async HandleRootsChangedTask." 2016-01-14 03:59:12 +00:00
Daichi Hirono
a796746198 Check isDestroyed after finishing async HandleRootsChangedTask.
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
2016-01-14 12:45:49 +09:00
Daichi Hirono
da19ee00a3 Stop listening root change events when the activity is destroyed.
BUG=26454244

Change-Id: I4be98f21843d6d501dd9c6fc343e905e107fc1c1
2016-01-13 13:19:02 +09:00
Aga Wronska
d3b8e52009 Merge "Keep Search View visible after search completed Improve Search View behavior Add Search View background color" 2016-01-11 23:05:43 +00:00
Aga Wronska
97831485e7 Keep Search View visible after search completed
Improve Search View behavior
Add Search View background color

Bug:26143355
Change-Id: Ifdc4bfff56fc6244c571dfbeff4179e1515d53b7
2016-01-11 14:58:18 -08:00
Daichi Hirono
3b36c5a10b Encapsulate stackTouched logic into State class.
BUG=26437613

Change-Id: I84a667cb3561d395daac4e63d9eaca589c8f1fea
2016-01-08 11:26:46 +09:00
Daichi Hirono
1830c2aa55 Merge "Leave from the current root when the root is removed." 2016-01-07 01:18:34 +00:00
Daichi Hirono
60e9a07557 Leave from the current root when the root is removed.
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
2016-01-06 13:32:39 +09:00
Aga Wronska
43f20493d0 Pressing back button clears search
Bug:26143308
Change-Id: Iaa02d39a6ee1fd1a0c7d4d07453a481af97c7664
2015-12-22 13:24:52 -08:00
Ben Kwa
862b9641e3 Re-enable sorting in the DirectoryFragment.
- 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
2015-12-16 13:54:01 -08:00
Tomasz Mikolajewski
39acff5a36 Wire support for archives to DocumentsUI.
Bug: 20176812
Change-Id: I8220afa2f53b07aa842bf6ac24fcc62afd4e2617
2015-12-07 11:34:03 +09:00
Steve McKay
8fd086a18d Fix broken copy after recent copy related chagnes.
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
2015-12-04 14:24:48 -08:00
Steve McKay
dbdaa49be4 Add DownloadsActivity functional test.
Bug: 25809806
Change-Id: I43ceaf3a99715a57e3d349bee60f2edf7f6666bd
2015-12-02 14:11:47 -08:00
Ben Kwa
84cebbeb69 Open the destination dir when a copy notification is tapped.
- 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
2015-11-18 11:22:30 -08:00
Steve McKay
f862155e34 Move DirectoryFragment and family to dirlist pkg.
Stuff was getting out of control in the main package.

Change-Id: Ia06ba96f5bbe13388d51e6ad52a9dac76af97cc0
2015-11-04 15:04:57 -08:00
Ben Kwa
8250db41cb Add shift-selection to DocumentsUI.
- 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
2015-10-16 15:41:59 -07:00
Steve McKay
0c2a0a811f Performe save when ENTER is pressed.
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
2015-10-15 10:35:55 -07:00