Commit Graph

20 Commits

Author SHA1 Message Date
Doris Ling
f2cf2aea37 Remove code that check for dashboard feature.
- remove DashboardFeatureProvider.isEnabled() and all relating code
and tests.

Bug: 35764802
Test: make RunSettingsRoboTests
Change-Id: If7796677abc8904b7436525836d50cdef38e37a4
2017-03-07 11:15:03 -08:00
jackqdyulei
882d48fd46 Invoke notifySummaryChanged callback only when text changed.
Bug: 32905374
Test: make -j40 RunSettingsRoboTests
Change-Id: I709329d3024656080723383231a884f3cf8a9a43
2016-11-16 17:34:09 -08:00
Fan Zhang
66b573ad5a Add display settings dashboard to new IA.
- Added a activity-alias pointing to displaySettings as top level
  setting item.
- Refactored all preference logic in DisplaySettings into
  PreferenceControllers. During fragment onAttach it installs all
  controllers, and during onResume it updates preference state. Each
  controller listens to its own preference change event.

Bug: 31800242
Test: RunSettingsRoboTests
Change-Id: Ibc9bf200c5acce7c4ae9292340822afee27a3a28
2016-10-10 18:26:29 -07:00
Fan Zhang
fabbfb435e Refactor SummaryLoader to set summary on subsetting pages.
- Make a SummaryConsumer interface. Things that needs latest summary
  should implement this interface (DashboardAdapter for homepage,
  DashboardFragment for subsettings). This also decouples SummaryLoader
  from relying on SettingsDrawerActivity.
- Make DashboardFeatureProvider more generic to load DashboardCategory
  by key.

Bug: 31781480
Test: RunSettingsRoboTests
Change-Id: I9c65456fb433a74c352498251e0ccf65da0be1f0
2016-10-07 14:52:06 -07:00
Fan Zhang
36924659f5 Refactor DashboardFragment.
Merged refreshAllPreferences into DashboardFragment. This hopefully
makes it more modular to manage preference display logic in each
dashboardFragment, and makes it more efficient to monitor category
changes.

Now subclasses needs to implement 2 methods:
- displayResourceTiles(): for 'static' preferences from xml
- getDashboardTiles(): returns a list of dashboard tiles and superclass
  will wire it up to preference screen.

If getDashboardTiles() return null (aka no dashboardCategory available),
the fragment will not attempt to monitor category change. The edge case
is that if a package starts to provide a tile for this category, we will
not be notified. I have not seen this case coming up. If we indeed need
to handle this case, the category listener needs to have a way to
monitor specific category rather than globally.

Bug: 31781480
Test: make RunSettingsRoboTests -j40
Change-Id: Ia9f9541b95816214df0d0bb27e3e41078c36c5ca
2016-10-07 11:55:43 -07:00
Fan Zhang
a96a2d8d60 Use DashboardFeatureProvider to load homepage tiles.
Adding support to homepage category.

Test: SettingsRoboTests for regression. Will write tests for new feature
soon once we are set on the data structure.
Bug: 31781480

Change-Id: I25fa367fecb643f17e23f0182df7585bf1fcdd02
2016-09-29 12:31:10 -07:00
Fan Zhang
011362d9f1 Update summary correctly in Settings dashboard.
Bug: 30490325

SummaryLoader needs DashboardCategory to update summary and it currently
ask for it from DashboardAdapter. But DashboardCategory is not always
available in DashboardAdapter. When SummaryLoader wants to get category
from adapter before adapter is ready, it won't have it, causing summary
to appear blank sometimes.

The fix is to get category from data source directly.

Change-Id: I9d7f676954d1cece42d6e03748ab7aa35357f8b7
2016-08-03 15:50:39 -07:00
Jason Monk
a8a029f8eb Try to fix receiver crash
Change-Id: I98fcde7f4595d0bf90bf2a2b8ba96cb96519a008
Fixes: 28554650
2016-05-03 14:25:56 -04:00
Jason Monk
8d8de14905 Fix summary lifecycle
Once more and probably not for all

Don't let multiple listening state changes get queued, this can cause
rapid changes like listening->not listening->listening.  Also store
listening state on the worker thread now that we drop some state
messages and only notify summaries when there is a state change.

Change-Id: I93a5f364e9b35929f9088e044ebefd9be69740e6
Fixes: 28319383
2016-04-28 10:42:10 -04:00
Jason Monk
8b986f5f73 Attempt to fix receiver registering problems
When in doubt, post to main thread.

Also clean up the listening state just in case there were any
doubts about it.

Change-Id: I9ab85781f38b0f694dc46ed5a953506ef10c5778
Fixes: 28319383 (Fingers crossed)
2016-04-22 11:40:13 -04:00
Jason Monk
0842797a25 Fix summary loader lifecycle
Previous CL accidentally cleared the listening bit too early making
it never actually tell the SummaryProviders to stop listening.

Change-Id: I6af1acc861f6987b33641c40637354c75cf4d708
Fixes: 28306872
2016-04-21 14:15:13 -04:00
Jason Monk
8ab081e304 Potential fix for receiver leak problem
The background thread is not stopping listening fast enough and is
resulting in first a receiver leak message followed by a crash when
trying to finally unregister the receiver.

Fix this by adding a registerReceiver to SummaryLoader that will
automatically unregister the receiver on the main thread to ensure
it happens in time.

Change-Id: I0104e929d5505eb53993f6765e4c90120df35cf6
Fixes: 28211606
2016-04-18 15:30:42 -04:00
Jason Monk
5673ced93c Work on settings startup speed
- Cut down on amount stored in conditions xml
 - Remove extra work from dashboard startup
 - Move summary to min priority

Change-Id: I51ca3828e4446632d6faa60dcfbab3446d19d335
Fixes: 28134360
2016-04-12 15:19:50 -04:00
Jason Monk
c064573265 Fix missing summaries
Handle non-cached tiles by doing lookup from component name.

Change-Id: I979e2df2eed4a065f290c5c0e66276d08b4fb0af
Fixes: 27942733
2016-03-31 13:59:46 -04:00
Jason Monk
9425839379 Fix SummaryLoader lifecycle second and for all
Mostly hypothetical fix for weird circumstance where listening
lifecycle gets broken.  To fix this, track the current state
of listening in the SummaryLoader and force it into the non-listening
state when released.

Bug: 26027137
Bug: 26731143
Change-Id: I7299749230924eafa3e6e7d5b0de6e48ff014a38
2016-03-08 13:14:27 -05:00
Jason Monk
816959889e SummaryLoader: Make sure all messages are proccessed on release
Otherwise the receivers don't get unregistered, which causes a warning,
immediately followed by them actually getting unregistered, which
causes a crash.

Bug: 26027137
Change-Id: Ib55edb4490de960d10036c35d98b8a8e31e13ae1
2016-03-02 15:08:41 -05:00
Jason Monk
d4f03ec86f Add suggestions to settings
Use an XML to define the categories that Settings will look for,
and surface enabled activities under those categories as suggestions.

When clicked on the activity will be started for result.  If the result
is not cancelled, then the operation is assumed successful and the
suggestion is disabled.  Users can also use an overflow -> remove
flow to get rid of unwanted suggestions.

Change-Id: I767abf8efe103af0509bc6b6b55888ae82643512
2016-01-07 16:25:34 -05:00
Jason Monk
fd2c722418 Work on settings launch speed
Move some stuff to the background, avoid doing other things.

Change-Id: I145172efa16f81c2f377f07744c8f88145e2ed1d
2015-12-02 16:10:08 -05:00
Jason Monk
8c4ca41d25 Make sure the dashboard is up to date
Bug: 25794089
Change-Id: I65eaa8e14b3c998ec122eaa9fc4dbbe3749c568c
2015-11-30 15:43:34 -05:00
Jason Monk
3069581512 Summary support for Settings Home
Also add summaries to a few of the major items.

Change-Id: I17924f14941fe095d819e142cdd21cf4b4e9ffd1
2015-11-17 13:51:45 -05:00