Commit Graph

92 Commits

Author SHA1 Message Date
Matías Hernández
6737cbf68a Skip updating mode list entries for unchanged modes
Bug: 357861830
Test: manual, with debugger
Flag: android.app.modes_ui
Change-Id: Ieaea5053d1e8e3bc4052af1f961470eb8211192f
2024-08-06 18:39:21 +02:00
Matías Hernández
a4c99767b7 Overhaul the message senders screen
* Fix combinations of messages=all with other conversation values.
* Correctly display policies with CONVERSATION_SENDERS_ANYONE. An additional checkbox is included, but _only_ if the policy has CONVERSATION_SENDERS_ANYONE when shown.
* Changed updateState() to consider the possible cases one by one. Because multiple policies are mapped to the same checkbox states, the strategy of "checking whether the state matches what the checkbox wants to set" doesn't really work.
* Fix messages summary and circles to support CONVERSATION_SENDERS_ANYONE.
* Added a lot of tests (actually, hopefully ALL OF THEM) covering the user-visible behavior. :)

Fixes: 354658240
Test: atest ZenModesSummaryHelperTest ZenModePrioritySendersPreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: I727496ca3eb820e4baaab942b61d2e57cdb491fc
2024-08-02 12:36:44 +02:00
Matías Hernández
d21dec33d1 Merge "Fix Zen tests that were failing with modes_ui enabled" into main 2024-07-31 09:21:04 +00:00
Matías Hernández
0359aaeb47 Tweak Modes layouts and use updated strings to match mocks
Bug: 333682392
Test: mostly manual, also ZenModeTriggerUpdatePreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: I5bae828a55128f3cb0b07ea0ff21ca196e7564dc
2024-07-30 17:45:38 +00:00
Matías Hernández
f4d44c5500 Fix Zen tests that were failing with modes_ui enabled
Actual fixes are in ZenModesListFragmentTest (was creating somewhat unrelated preferences with the actual ZenModesBackend, and isAvailable now returns true for them) and ZenModePreferenceControllerTest (no longer available with modes_ui). But also added EnableFlags(FLAG_MODES_UI) to all tests in notification/modes that lacked it, so we don't regress before we flip the flag.

Bug: 356334282
Test: atest com.android.settings.notification
Flag: android.app.modes_ui
Change-Id: I791b52cfb3fd9adea61079b4b41e456c8b3fe7bd
2024-07-30 14:33:03 +02:00
Matías Hernández
50a18d9e85 Merge "Fix a11y issues in the schedule editor" into main 2024-07-29 23:29:26 +00:00
Matías Hernández
149bd0a5a4 Merge "Improve lifecycle of ZenModeFragment & friends" into main 2024-07-29 20:28:55 +00:00
Matías Hernández
a463b0af7b Fix a11y issues in the schedule editor
* Don't read start / end time as separate labels.
* Fix content description of day buttons (ToggleButton's stateDescription is textOn/textOff -- which are the same for this particular button, thus it wasn't possible to know whether a day was selected or not).

Fixes: 346396147
Test: manual, with Talkback
Flag: android.app.modes_ui
Change-Id: If73a791cf9bd62cf17e058c81a8051b3e7fd82ea
2024-07-29 18:11:34 +00:00
Matías Hernández
691c0c3f6a Fix unwanted animation when opening Modes list
Fixes: 356151158
Test: manual
Flag: android.app.modes_ui
Change-Id: Ibbc54c68c4bcbf75e908d4a36ef2d8f609b5b797
2024-07-29 18:11:17 +00:00
Matías Hernández
b8b897e552 Improve lifecycle of ZenModeFragment & friends
* Don't keep Settings observers longer than start-stop.
* Only call updateState() once on controllers during create->start->resume.
* Remove some duplicate controller update methods from ZenModesFragmentBase (we can directly call DashboardFragment's).
* Don't update controllers if unrelated modes were changed.
* Extract ZenSettingsObserver for use in the link tile later.
* Add tests.

Fixes: 353946788
Test: atest com.android.settings.notification.modes
Flag: android.app.modes_ui
Change-Id: I64b51714d699b5c3a592a76fcb615d2999998829
2024-07-29 20:10:03 +02:00
Matías Hernández
e8306014f0 Fix jiggle when opening custom manual modes
Looks like setting Preference visibility in updateState() is too late to avoid an animation, and isAvailable() should be used instead. This forces us to split ZenModeSetTriggerLinkPreferenceController (which handled the category and its two children) into separate controllers for the category and each child. Although untangling this code was annoying, the result is arguably cleaner, since the two child preferences deal with different things.

Fixes: 355623101
Test: atest com.android.settings.notification.modes
Flag: android.app.modes_ui
Change-Id: I5fb1b3cbe424973b852f820ecf948491c050421f
2024-07-26 17:44:53 +00:00
Matías Hernández
69ce43462e Allow turning off currently active modes
Even if they don't allow manual invocation. The button will disappear afterwards -- maybe not perfect but good enough.

Fixes: 355613076
Test: atest ZenModeButtonPreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: I36cc96f7da78266be1a03e947304fc8e600899de
2024-07-26 14:47:07 +02:00
Matías Hernández
d0fc102275 Fixes to CircularIconsPreference & friends
Fixed view reuse. The views obtained from the ViewHolder should not be stored in Preference fields, since they can be rebound and thus a Preference can end up updating the wrong view.

Also added equivalence to the item class in the People segment so there is no flicker when the mode is reloaded.

Fixes: 346551087
Test: atest com.android.settings.notification.modes
Flag: android.app.modes_ui
Change-Id: Ibd89a826b19acabd9a46bb3ba2916453689636ed
2024-07-25 20:33:16 +00:00
Matías Hernández
246960de0c Update top of modes page
* Show blurb based on mode type.
* Make the icon bigger and highlight it when mode is active.
* Increase spacing between elements.

Also eliminate some code duplication between header of mode page and header of icon picker.

Fixes: 355415875
Test: manual
Flag: android.app.modes_ui
Change-Id: I7e788b9b5920cedb791d1571b19b37e65ece6d0b
2024-07-25 21:28:27 +02:00
Matías Hernández
38aaa27625 Disable all preferences (except toggle) when a mode is disabled
Also set some alpha on the circles so that they look more or less disabled as well.

Fixes: 354867828
Test: atest com.android.settings.notification.modes
Flag: android.app.modes_ui
Change-Id: I53ef5e381d37afa20b0532f3c7ddb3f106b2e85e
2024-07-24 17:57:10 +02:00
Matías Hernández
77191e9519 Show confirmation dialogs when enabling or disabling a mode
(Strings are not final, but structure is there).

Bug: 349376785
Test: atest ZenModeSetTriggerLinkPreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: Ia9e604483b90bc30ad1c12e5663a07e251084073
2024-07-24 13:14:41 +02:00
Matías Hernández
9e2ac046e4 Changes to the trigger segment
* Switch is always visible, even without a configuration activity
* Custom icon, title, and summary for some mode types (such as SCHEDULE_TIME, etc).
* Default texts in case of missing trigger description.
* Different icons for having/missing configuration activity.
* Move the section to the top of the screen.

Bug: 349376785
Test: atest ZenModeTriggerLinkPreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: I960318899cf4da20ffc5765818429d5790d05067
2024-07-23 18:14:34 +02:00
Matías Hernández
44c7272733 Final (?) touches to people/apps/sound circles
* Support comparing icon sets with a custom equivalence (needed because AppEntry doesn't implement equals(), and somewhat tricky because CircularIconPreference itself is not generic).
* Use final icons for allowed sounds.
* Use final appearance for +n icon.

Test: atest com.android.settings.notification.modes
Bug: 346551087
Flag: android.app.modes_ui
Change-Id: Iceadf4a182e607111afb72ff36bca872a62ae040
2024-07-22 17:06:38 +02:00
Matías Hernández
d8b9fe8f01 Show icons for allowed contacts
Test: atest com.android.settings.notification.modes
Bug: 346551087
Flag: android.app.modes_ui
Change-Id: If2b6b06b4a9c16bdefb03850ad1615e96c601fbd
2024-07-22 14:20:25 +02:00
Matías Hernández
352100397f Show icons for allowed sounds
(Some icons are temporary, until we get the final assets)

Also some fixes/improvements to CircularIconsPreference:
* Show the correct placeholder and +N icons.
* Fix the displayIcons-before-measure case (global layout listener was incorrect).
* Properly cancel pending image load futures (field didn't point to the actual future).
* Don't reload icons if it's the same set (depends on equals() for the items, so unfortunately doesn't work for AppEntry yet).

Test: atest com.android.settings.notification.modes
Bug: 346551087
Flag: android.app.modes_ui
Change-Id: I9d029a5fdd785ada4e2ba4d8a90eba72b5fb9085
2024-07-19 15:30:45 +00:00
Matías Hernández
0ebc865c5e Show icons for apps bypassing DND
(Several things pending, such as the +n icon and the correct pending icons, but it's a start).

Test: atest com.android.settings.notification.modes
Bug: 346551087
Flag: android.app.modes_ui
Change-Id: Ifd2ab6a8bb447739dc8ffe400c3960779d477fd6
2024-07-18 11:59:06 +02:00
Matías Hernández
da3ae255e3 Distinguish the profile of DND-bypassing apps
Bug: 353273192
Test: atest ZenModeAppsLinkPreferenceControllerTest ZenModesSummaryHelperTest
Flag: android.app.modes_ui
Change-Id: I31d8836dbba38d04c9ab3b3180025cb8ddcfbe6d
2024-07-16 08:59:53 +00:00
Matías Hernández
3cd8fc86e1 Add "rename" option to 3-dot menu
(And remove the segmented buttons).

Fixes: 346278854
Test: manual
Flag: android.app.modes_ui
Change-Id: I6d45ba91cc400e5f3f01245c315cc5f0322c3bb1
2024-07-10 00:44:32 +00:00
Julia Reynolds
f9ce78e87b Merge "Create a new link preference for priority modes entry" into main 2024-07-09 13:17:06 +00:00
Matías Hernández
bb41777f87 Merge "Add mode: Choose name and icon for new custom modes" into main 2024-07-09 02:20:07 +00:00
Matías Hernández
574fcaf1b2 Add mode: Choose name and icon for new custom modes
This also unifies the "icon picker" screen with the new "add mode" screen since in both cases we want to edit name and icon together (and not save updates until the user confirms).

Bug: 326442408
Bug: 346278854
Test: atest com.android.settings.notification.modes
Flag: android.app.modes_ui
Change-Id: I8a9d07ba0b6c55f3abc1b9884f278d51d178dc83
2024-07-06 22:12:58 +00:00
Matías Hernández
606f9b1727 Merge "Use a temporary summary in the "Apps that can interrupt" preference" into main 2024-07-06 10:42:23 +00:00
Matías Hernández
ec376bcfce Use a temporary summary in the "Apps that can interrupt" preference
We load the list of apps in a background thread, so getting that string later was causing the preference to increase in height, with an annoyingly noticeable animation. Having a placeholder test ensures this doesn't happen (and actually loading is pretty fast, so this text lkely won't even be visible).

Fixes: 347744856
Test: atest ZenModeAppsLinkPreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: I4f9f60104fb8b0abbc7c4279b87daafac481e98a
2024-07-05 17:36:47 +02:00
Julia Reynolds
4fd34aa386 Create a new link preference for priority modes entry
Test: ZenModesSummaryHelperTest
Test: manual. Successfully search for both 'event' and 'priority'
Flag: android.app.modes_ui
Bug: 341726633
Change-Id: Ib7bd1a5c2f7b06b1728a66f7a9cef53cd45acc0b
2024-07-03 16:22:20 -04:00
Yuri Lin
8a766c1b9b Merge "Check that modes can be deleted before adding delete menu option." into main 2024-07-02 19:23:02 +00:00
Yuri Lin
2a19cc1874 Check that modes can be deleted before adding delete menu option.
Migrates to using MenuProvider instead of onCreateOptionsMenu, since the previous approach is apparently now deprecated.

Also wraps usages of requireActivity() so that we're sure the activity isn't null instead of potentially throwing an exception.

Flag: android.app.modes_ui
Bug: 346575126
Test: manually confirmed that manual DND is no longer deletable
Change-Id: I872f6054061c019db9a72028cc90cbb123a1cdce
2024-07-02 14:10:19 -04:00
Matías Hernández
45f1e819d3 Icon picker: Styling improvements
Instead of a the plain appearance of a EntityHeaderController, make the top icon bigger and use the same circled style as the choices in the list. Also highlight the current icon in the list as selected, even if it is the default for the mode type.

Also cleaned up controllers that don't need a ZenModesBackend to not receive it.

(Both of these changes also line up with the "new mode" fragment that is incoming).

Bug: 333901673
Bug: 326442408
Test: atest com.android.settings.notification.modes
Flag: android.app.modes_ui
Change-Id: I0c9f3e34019a1a6c48658933dde545ad8d7399ae
2024-07-02 12:12:02 +02:00
Matías Hernández
2639c19474 Add mode: Support for app-provided modes
(This completes the add-mode flow except for the choose-a-name-and-icon step for custom modes).

Bug: 326442408
Flag: android.app.modes_ui
Test: atest com.android.settings.notification.modes
Change-Id: I7aceec01ed54d804bcac53d932277c243c1f81bf
2024-07-02 12:09:40 +02:00
Yuri Lin
21539cd2be Link to app-provided configuration intent for app-owned rules.
If there is no valid intent, the automatic trigger preference is disabled.

Flag: android.app.modes_ui
Bug: 341961712
Test: manual (for Bedtime & Driving modes), ZenModeSetTriggerLinkPreferenceControllerTest

Change-Id: I673792effb3cfdcaaa7cf85adfb55a93b44dcc86
2024-07-01 14:50:35 +00:00
Yuri Lin
c1a4abbc51 Migrate "duration for quick settings" to new modes page.
This mostly continues to use the existing dialogs in settingslib (ZenDurationDialog, SettingsEnableZenModeDialog) and creates a controller to read from the settings value.

Also updates the "turn on / turn off" button to respect the preferred duration.

Flag: android.app.modes_ui
Bug: 343444249
Test: ZenModeButtonPreferenceControllerTest, ManualDurationPreferenceControllerTest
Change-Id: I2fd49a79d9a5807fefdd7ec310a6cc60d70f9bb1
2024-06-27 12:48:27 -04:00
Matías Hernández
3df9e97f77 Merge "Changes to icon picker for reusability in "add mode" flow" into main 2024-06-26 11:40:21 +00:00
Matías Hernández
c2d2de085d Changes to icon picker for reusability in "add mode" flow
* Don't finish the fragment from the controller (ugh!) instead just report the selected icon via a listener.
* Highlight the selected icon in the list.
* Cache the icon drawables (since we're using selectors for the colors, we don't need to swap them, one per icon resource id is enough).
* Improved the tests a bit too.

Bug: 333901673
Bug: 326442408
Test: ates
Flag: android.app.modes_ui
Change-Id: Ib2ec7a7e3ed99b13f9264aa6f7c209ee3f6967a0
2024-06-26 11:38:56 +02:00
Matías Hernández
7fb0c3308e Adjust strings in modes list to match latest mocks
Bug: 346575288
Test: atest ZenModesListItemPreferenceTest
Flag: android.app.modes_ui
Change-Id: Ibe9c049ed0fb3b1838866b923a6227d67885c75c
2024-06-25 16:48:31 +02:00
Yuri Lin
84dd202d09 Merge "Add "delete mode" option on mode configuration page" into main 2024-06-24 19:30:47 +00:00
Yuri Lin
eb7285170b Add "delete mode" option on mode configuration page
Flag: android.app.modes_ui
Bug: 346575126
Test: manual
Change-Id: I0d085eb54ef5fa07f312bdddf0219855bf1c2ef4
2024-06-24 14:16:47 -04:00
Matías Hernández
bcc608fbb2 Style priority modes items in aggregator
* Different color if active.
* Trigger description / "ON" / "Paused" / "Tap to set up" depending on enabled and active status (strings may be revised later).

This CL also adds a helper class to create ZenModes, reducing boilerplate in unit tests.

Bug: 346575288
Test: atest com.android.settings.notification.modes
Flag: android.app.modes_ui
Change-Id: Ia0e16b8be5284d13bed4366cbee0f92748bf2f85
2024-06-24 11:56:11 +02:00
Ioana Alexandru
b67c157e2f Merge "Move ZenModesBackend to SettingsLib." into main 2024-06-21 16:50:27 +00:00
Ioana Alexandru
b1dad7d5b4 Move ZenModesBackend to SettingsLib.
This will allow us to access it from SystemUI.

Bug: 346519570
Test: builds
Flag: EXEMPT trivial refactor
Change-Id: I5bc480bd4eb0cbf8a26989dd11c064e66e5ee70e
2024-06-21 15:19:11 +02:00
Julia Reynolds
dea5102c44 Migrate Settings intents
to our new modes ui

Fixes: 333909883
Test: manual - created test app that launches each intent, launched each
with flag on and flag off
Test: atest com.android.settings.notification.modes
Flag: android.app.modes_ui

Change-Id: I8259b554fe34b453880890c667165547033ccd06
2024-06-20 12:48:40 -04:00
Julia Reynolds
3b62c23310 Design refresh for modes that don't filter notifications
And fix a crash noticed in ZenModeAppsLinkPreferenceController

Test: atest com/android/settings/notification/modes
Fixes: 308820027
Flag: android.app.modes_ui
Change-Id: I0cfe4e10ca7ff97dac3b3b8756cc36f4d6f91ea2
2024-06-20 13:10:36 +00:00
Matías Hernández
0bf4899f3e Support adding an automatic schedule to previously-manual system-owned modes
Bug: 342156843
Bug: 326442408
Flag: android.app.modes_ui
Test: atest com.android.settings.notification.modes
Change-Id: Ib7d15b8fc949fa73015537f03a882ef7eb6b4bcd
2024-06-19 15:06:08 +02:00
Matías Hernández
ee414b4c43 Extract the not-strictly-modes-related parts of ZenModesBackend
So that when it's moved to SettingsLib, it doesn't need to carry that baggage.

Bug: 346519570
Test: atest com.android.settings.notification.modes
Flag: android.app.modes_ui
Change-Id: I7911a521d96f5dbac2c2395171d324b7b54b8b07
2024-06-17 18:11:39 +02:00
Alexander Roederer
be647ab053 Merge changes from topic "b308819928-ModesSettingsAppBreakthroughPage" into main
* changes:
  Modify Summary for Mode's Apps settings page
  Adds summary helper for apps subtitle
2024-06-16 02:49:53 +00:00
Alexander Roederer
41902bb0c5 Modify Summary for Mode's Apps settings page
Adds call to SummaryHelper to set Apps preference summary.

Bug: 308819928
Test: atest ZenModeAppsLinkPreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: Iebec11afc62ecb79386e1866af57cd4e68461a95
2024-06-15 04:48:38 +00:00
Matías Hernández
8409c39d94 First bits of "add a mode"
* Preference below the modes list.
* Temporarily triggers addition of a mode with default name and type=SCHEDULE_TIME (type will be "manual only" later).
* Fixed sorting of modes in the list when refreshing (new modes were added at the bottom instead of where they should, the same would've happened for renamed modes).
* Minor polishes (extracted fragment launch to helper class, renamed item controller class for clarity).

Test: atest com.android.settings.notification.modes
Bug: 326442408
Fixes: 347198709
Flag: android.app.modes_ui
Change-Id: Ie276c92181c5374faf74592433595e7e15a5efc0
2024-06-14 15:23:30 +00:00