Commit Graph

30 Commits

Author SHA1 Message Date
Mill Chen
f6895743cf Deprecate Settings panels and its infrastructure
Bug: 328525899
Test: robotest
Change-Id: I30bc423e31e9202e70c509459f4397c296c8423f
2024-05-06 22:47:07 +00:00
Behnam Heydarshahi
e711c0f256 Merge "PanelSlicesAdapter: load slice label safely" into udc-qpr-dev am: c46e8546b5 am: a38edf1ab2
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/24664970

Change-Id: I09416fd5dee6842179358c6bb9bba6c533841045
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-09-16 02:55:24 +00:00
Behnam Heydarshahi
374b417b68 PanelSlicesAdapter: load slice label safely
Load the slice action label string safely when action label is set, and
no longer at adapter instantiation time.

Bug: b/298571448

Test: atest PanelSlicesAdapterTest
Change-Id: I0d5b6e0b2db2fa78d3f58ae2cb96f14437923ffd
2023-09-15 14:44:33 +00:00
Behnam Heydarshahi
2329c823ab Merge "TalkBack: Clarify volume panel slice action label" into udc-qpr-dev am: a5b314b90f am: e16000bbae
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/24005152

Change-Id: I925cca06a0fc7907f032448ab02411028f421000
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2023-08-31 15:31:35 +00:00
Behnam Heydarshahi
017fa1c652 TalkBack: Clarify volume panel slice action label
Change the generic "double-tap to activate" into "double-tap to enter
settings".

Bug: b/285516489

Test: atest PanelSlicesAdapterTest
Change-Id: I1bba0d625c93db90f347b756f5a20a7ac7e64d56
2023-08-24 19:02:55 +00:00
Chaohui Wang
8e2ae547d6 Clean up FeatureFactory.getFeature()
Bug: 286764889
Test: m Settings
Change-Id: I7e472e6b0ca6b7a735c1b92742ddf06c545176fc
2023-08-08 08:41:48 +00:00
Behnam Heydarshahi
4f87dd4b56 Implement a separate controller for ring volume
When ring volume is separated from notification, a new xml preferece and
controller is needed for it, so that the settings search can show/hide
the slice correctly.

1. Use a separate preference and controller for ring volume (vs ring &
notification combined)
2. Notification slice in settings no longer grays out when ringer mode
is set to mute or vibrate.
3. Introduce an abstract RingerModeAffected preference controller class
to factor out duplicate code among ring, notification, and separate-ring
controller classes.

Bug: b/259084354

Test:   make ROBOTEST_FILTER=RingVolumePreferenceControllerTest
RunSettingsRoboTests -j40
        make ROBOTEST_FILTER=SeparateRingVolumePreferenceControllerTest
RunSettingsRoboTests -j40
        make ROBOTEST_FILTER=NotificationVolumePreferenceControllerTest
RunSettingsRoboTests -j40
        make ROBOTEST_FILTER=VolumePanelTest RunSettingsRoboTests -j40
	make
ROBOTEST_FILTER=RingerModeAffectedVolumePreferenceControllerTest -j40

Known Issue:
1. When streams are separate and ring volume set to mute/vibrate,
notification is set to zero, but not disabled. So it can be turned on
by user (and in settings the icon will stay mute/vibrate instead of
changing to the normal notification icon).

2. In the above scenario after notification is unmuted in settings,
the notification icon continues to stay vibrate/mute -- should change
to the normal notification icon.

Note: This feature is controlled using a boolean DeviceConfig flag:
systemui/"volume_separate_ring". The default value is 'false', which is
meant to keep the experience the same as before. It will be set to
'true' for teamfood and dogfood. Eventually the flag will be removed and
the code in the 'true' branch will prevail.


Change-Id: Ibec871eafeef4081e96c5e0dd04535565d50a077
2022-12-28 22:33:50 +00:00
shaoweishen
66098febbc [Sound Panel] Fix bugs for sound panel slice
1. notify item change when slice live data has update
2. keep showing Output Switcher slice when media state is in "Pause"
   state

Bug: 247043239
Bug: 238715094
Bug: 204165377
Test: verified on device
Change-Id: Ic56a70f2f2835231519e2fccf0d2e649d41b106e
2022-10-20 02:46:41 +00:00
Behnam Heydarshahi
3ac6aaf796 Add notification volume controller in settings
Separate notification and ring controllers based on the ring/volume
stream alias boolean in config.xml.

For both ring and volume controller: Not show vibrate icon when vibration is not supported on device. Show
silent icon instead.

Known issue: Add the notification volume slider only in Settings, and
not in VolumePanelDialog. When the alias is set to false and the streams
separated, the ring volume slider in VolumePanelDialog keeps its title
of "Ring & notification volume" instead of changing to "Ring volume".

Bug: b/38477228

Test: make DEBUG_ROBOLECTRIC=1 ROBOTEST_FILTER=NotificationVolumePreferenceControllerTest RunSettingsRoboTests -j40
      make DEBUG_ROBOLECTRIC=1 ROBOTEST_FILTER=RingVolumePreferenceControllerTest RunSettingsRoboTests -j40
      make DEBUG_ROBOLECTRIC=1 ROBOTEST_FILTER=SoundSettingsTest RunSettingsRoboTests

Change-Id: Id17523f49b291a5cf612b90f93c3b2ab6486c62f
2022-10-10 14:42:56 +00:00
changbetty
d1d9798a5d [LE Audio] Add entry point in Media Volume slice for broadcast sink
Bug: 228274114
Test: make RunSettingsRoboTests
Test: Manual test
Change-Id: I331232c30291348faf7166d4de8060a1cfe12bff
2022-04-25 02:42:46 +00:00
shaoweishen
fb164fe128 [Sound panel] Update Ui layout to match with mertial next
please check bug for before/after screenshot.

Bug: 191317779
Test: verified on device
Change-Id: Ia570dde71ce9f18376eaba48102cecde6adb85bb
2021-10-12 14:24:09 +00:00
changbetty
f6b159382c [GAR] Set the attribute of SliceView is not important to skip for Accessibily
Bug: 179002330
Test: manual test
      make RunSettingsRoboTests ROBOTEST_FILTER=PanelSlicesAdapterTest
Change-Id: I67cdd04cd5655ab297d58d7f9ee20e5e0f6ea7fd
2021-05-27 16:52:36 +08:00
timhypeng
7c86980bf3 Remove unused variable
-remove VIEW_TYPE_SLIDER_LARGE_ICON
-remove MEDIA_OUTPUT_GROUP_SLICE_URI
-remove MEDIA_OUTPUT_SLICE_URI

Bug: 175850711
Test: build pass
Change-Id: Iecf987cc91934a7598762523814f5f575302dde2
2020-12-21 03:23:32 +00:00
Tim Peng
480409ca7b Add bottom padding in SliceView for output switcher panel
Bug: 159760833
Test: manual test
Change-Id: Ide1c68da0b5225e3341cd96ff9a786b483c15e5d
2020-06-24 09:18:50 +00:00
Tim Peng
aeabfc3050 Add a separate line at the bottom of list area in output switcher
-Bottom divider is not showed when there are more than 7 devices exist in output switcher
-Check panel type in isDividerAllowedBelow()
-Hide the Slice bottom divider of Output switcher panel
-Show divider in panel layout only for output switcher panel

Bug: 159177275
Test: make -j42 RunSettingsRoboTests

Change-Id: I49396a0ee0543b494a2b3d714ec248ebab08e7ba
2020-06-20 03:44:43 +00:00
Tim Peng
27b0ef6eb3 Output switcher panel requires large title icon for Slice slider style
-Add "VIEW_TYPE_SLIDER_LARGE_ICON" to be a new panel type which would enlarge its title icon
-Set "VIEW_TYPE_SLIDER_LARGE_ICON" to MediaOutputPanel and MediaOutputGroupPanel
-Extend slider style and add customized icon size
-Add test cases

Bug: 157208551
Test: make -j42 RunSettingsRoboTests
Change-Id: I9b4de4aa552e8b26e766411f7eff93ea1a2d1910
2020-06-12 11:22:17 +08:00
Tim Peng
493e1a62c8 In Media Switch output panel, Switch access shouldn't select the first device when selecting the device list
-The group view should not be clickable
-Disable view clickable flag

Bug: 151126466
Test: make -j50 RunSettingsRoboTests
Change-Id: Ia617f436a615168d422d208959db5513b38e6564
2020-05-14 15:19:39 +08:00
Tim Peng
2f47d771fb Add 12dp padding above the first slice item
-Add an extra padding in adapter for dedicated panels
-Add test cases

Bug: 154181365
Test: manual test
make -j50 RunSettingsRoboTests
"adb shell am start -a android.settings.panel.action.INTERNET_CONNECTIVITY"

Change-Id: I65bc26c23ca5a7f1b433c36ac7ddf1a658793719
2020-05-06 09:04:25 +08:00
Tim Peng
db7d61d0a2 Adjust layout for Slice InputRange
-Make title to slider aligned
-Add test cases

Bug: 147462114
Test: make -j50 RunSettingsRoboTests
Change-Id: Ib1d076f77eae75e4f861a80873117b6254729fe5
2020-03-09 21:50:58 +08:00
timhypeng
e60684c175 Extend panel max slice number to six
Bug: 147332809
Test: make -j50 RunSettingsRoboTests
Change-Id: I523af9ba1b2bd172cb544bf7d6ddb15f5f9d5aef
2020-01-08 05:41:22 +00:00
Raff Tsai
d9cfbaf3b5 Fix volume panel hang
SliceLiveData changed its behavior, if slice is null, it will not
notify LiveData observer but callback to onErrorListener. We only
reduce PanelSlicesLoaderCountdownLatch in LiveData observer.
Therefore the error slice caused PanelSlicesLoaderCountdownLatch
never count to 0, the UI was not displayed. It is solved by reducing
PanelSlicesLoaderCountdownLatch in onErrorListener and also not return
null in MediaOutputIndicatorSlice.

Test: manual
Fixes: 141084035
Change-Id: Iddb2dbdc0e0d2ac3e26071960bb667937f181121
2019-09-18 11:40:46 +08:00
Raff Tsai
ad004e9beb Fix media switch slice doesn't display in panel
Fixes: 140396725
Test: manual
Change-Id: Idf0b766ce5f4316ff90a23faf3083cdee9854562
2019-09-04 11:34:23 +08:00
Jason Chiu
e856e2b738 Change deprecated slice APIs to new ones
Bug: 138979954
Test: robotest
Change-Id: Ibc430f9975d4e40be00ae4ba61833e94cd090a0c
2019-08-14 11:34:27 +08:00
Lei Yu
3aacfca16f Fix issue in panel logging
Update log key to slice uri since previous key has no meaning.

Previously it is something like:
androidx.slice.widget.SliceLiveData$SliceLiveDataImpl@1a30b5

Bug: 131094876
Test: Manual
Change-Id: I52d605eb826821ef622aa075c04f829c60692976
2019-04-24 12:50:46 -07:00
lindatseng
634d8b3ee4 Set max num of slices allowed in panel view
Setup a max allowed num for PanelSlicesAdapter to prevent too
many slices showing in single panel.

Test: Manual verify
Test: atest PanelSlicesAdapterTest
Fixes: 129358092
Change-Id: I7b72a29489e597b8309d74841eaeab0fe42aace6
2019-04-16 17:28:14 -07:00
Matthew Fritze
b6fdd25c23 Add entry animation to Settings Panels.
Settings Panels as a dialog have a default animation for entering the
screen, but Slices complicate the animation. While the dialog enters the
screen, Slices begin to bind, thus changing the height of the dialog as
it enters, causing perceived bounce / jank in the animation.

This CL is cherry-picked/based on ag/6671083 but do the following modification:
(See the original commit message for the whole concept)

When trying to load all the Slices, there are few possible situations:
1. Slice starts loading slowly, starting at state LOADED_NONE
2. Slice is loading in progress, having state LOADED_PARTIAL
3. Slice is loaded, but there's error return from the Slice data (We don't
need to show the Slice in this case)
4. Slice is loaded, progress to state LOADED_ALL
5. Slice starts from state LOADED_NONE, but never progress to the next state
because it crashes at setting backend.

Notice that there are two cases that the state will stay at LOADED_NONE and
we can't distinguish them.

Hence, we decide to do the following:

If Slice is with error (case 3) we remove the slice from the list and mark it
loaded.

If Slice is loaded with LOADED_ALL (case 4, which is the ideal case), we mark
it as loaded.

In the other cases, we fire a handler to mark the slice loaded anyway after
250ms timeout.

When all the slices are marked loaded (which should happen after 250ms timeout,
we will animate the panel out.  Although there might be slices which are still
partial loaded, we can still have the slice in the panel once it is ready.
The panel might bounce/jank in this case, but at least it will still showing
correctly, and should show up smoothly in most cases.

The solution to this problem is twofold:
1. Load all Slices first
2. Create a custom animation to draw the panel once the recyclerview has
been laid out.

Test: Manual/Visual inspection
Test: make -j40 RunSettingsRobotests
Bug: 123942159

Change-Id: I639a707aa4ba3f906bd6f9752c92727aaba28142
2019-04-16 16:29:04 +00:00
lindatseng
cf93c8bc92 Remove divider above device switcher in panel
Remove the divider above the media device switcher Slice per the request.

Do a little refactor in Panel View, to use DividerItemDecoration instead of adding
divider views in layout file as the recycler view items divider.

Since dividers should be shown in most cases, we are setting DividerCondition to
DIVIDER_CONDITION_BOTH and default true to allow divider.  For the slice we don't
need divider (media device switch in this case) we are setting the the target
direction of isDividerAllowed (above in this case) to false.  Since we have
DIVIDER_CONDITION_BOTH, if one of the item view set the divider not allow, the
divider won't be shown.

Test: Visual/Manual inspection
Fixes: 126205139
Change-Id: Ic857705c90819ef9375f877a44bb32987b5d4438
2019-04-05 14:15:16 -07:00
jackqdyulei
369ad5a9cf Make Panel accept TitleItem for first row
Fixes: 128611750
Test: Manual
Change-Id: If1604f293d9fa7d538750a07cdbb729f5cc099dc
2019-03-14 10:58:35 -07:00
Matthew Fritze
b197110f71 Add logging for SettingsPanels
The 3 main categories are:
- Panel Opened
- Panel Closed
- Panel Slice interaction

There are 3 close events:
- See more button
- Done button
- Clicking outside the panel

Slice interactions will log the Uri of the Slice and the ActionType,
such as Toggle, Slider, Content (intent).

Change-Id: Iecad948f39f50dd12ae1bcb23a5d523e0df8bb98
Fixes: 117804231
Test: robotests
2019-02-13 16:06:24 -08:00
Matthew Fritze
c14316c4a9 Update SettingsPanel UI
UI changes include:
- RecyclerView to host slices
- Font family to headline font
- Title is now centered
- Added SeeMore & Done buttons
- Horizontal Dividers between slices
- Indented Slices
- Landscape layout is fullscreen

Change-Id: I3549c847fc88edd81f670ddfa2907dd3741441e0
Screenshot: https://screenshot.googleplex.com/RzWktzOZJkc
Test: Robolectric
Test: Manual app
Bug: 118622007
2018-11-30 13:26:50 -08:00