Commit Graph

1963 Commits

Author SHA1 Message Date
Matías Hernández
f1cd68ebd3 Reduce the size of individual icons in the icon picker
Bug: 359171199
Test: manual
Flag: android.app.modes_ui
Change-Id: Iba5c09948437887f12b946aa39f7c811437f20dc
2024-08-12 18:04:43 +02:00
Yuri Lin
74be225a4e Merge "Fixes to interstitial activity transitions" into main 2024-08-07 21:05:38 +00:00
Matías Hernández
5f60b880ea Merge "Modes List: Show the dynamic description, if available" into main 2024-08-07 20:36:29 +00:00
Yuri Lin
707014b3f9 Fixes to interstitial activity transitions
Return after finish() when mode data is invalid; start intent before finish() so the transition is animated like going forward.

Bug: 332730534
Test: manual
Flag: android.app.modes_ui
Change-Id: I26522fdf468da7f2fdb8f75ac405d5f808f8828f
2024-08-07 16:04:28 -04:00
Matías Hernández
d70fbf8e91 Filter out disabled modes from the "can activate automatically" count
Bug: 355615361
Test: atest ZenModeSummaryHelperTest
Flag: android.app.modes_ui
Change-Id: Id54f08bfc253e69db0efb4e330813e89c28058d9
2024-08-07 19:08:50 +02:00
Matías Hernández
a53b35262d Modes List: Show the dynamic description, if available
For manual DND, this means "On until XX:XX".

Bug: 357889514
Test: manual
Flag: android.app.modes_ui
Change-Id: Ia7531e7a6413544de88e4539ed602c8c6b4f93a8
2024-08-07 15:36:18 +02:00
Matías Hernández
31d5fbff3c Merge "Update Priority Modes segment summary" into main 2024-08-07 10:07:58 +00:00
Matías Hernández
377939483c Merge "Skip updating mode list entries for unchanged modes" into main 2024-08-07 00:18:34 +00:00
Yuri Lin
eb6dd8432b Merge changes from topic "yl-interstitial" into main
* changes:
  Resize & round corners on a placeholder interstitial image
  Add interstitial for modes that are disabled but not by user
2024-08-06 19:38:45 +00:00
Matías Hernández
f0952bef52 Update Priority Modes segment summary
* Display active modes regardless of DND status
* Only consider actually automatic rules for the "x rules can activate automatically" text.
* Also removed the duplicate settings observer in favor of ZenSettingsObserver.

Bug: 355615361
Test: atest ZenModesSummaryHelperTest
Flag: android.app.modes_ui
Change-Id: I39acb785e7b27c95ed664261640c42032acca9d1
2024-08-06 19:48:01 +02:00
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
Yuri Lin
cb824ccbd9 Resize & round corners on a placeholder interstitial image
This isn't a real image yet (just draws a diagonal gradient), but should now be roughly ready for inserting the correct drawables based on the mode whenever those are available.

Bug: 332730534
Test: manual, SetupInterstitialActivityTest
Flag: android.app.modes_ui
Change-Id: I45a78950f671a989258a85525a7a8ee0c445a332
2024-08-01 18:44:27 -04:00
Yuri Lin
65548c0e56 Add interstitial for modes that are disabled but not by user
This covers both the case of navigating to the mode page through the mode aggregator menu as well as if an app sends an intent to go to the mode.

The interstitial visuals are not done yet; in particular, the image is just a gray box for now.

Manual tests done:
- visually verifying the interstitial page in both portrait and landscape
- accessing the mode page from modes list, confirming interstitial pops up
- accessing enabled and disabled-by-user mode page from modes list (no interstitial)
- getting to the mode page from intent through an app
- accessing enabled and disabled-by-user mode pages from app intent (no interstitial)
- adjusted display and font size (it looks bad with max display & font size, maybe not much to be done)

Bug: 332730534
Test: manual, ZenModeFragmentTest, SetupInterstitialActivityTest
Flag: android.app.modes_ui
Change-Id: I21f13b0842d5b118a341f7d85e8fcac947ca3a06
2024-08-01 18:44:22 -04:00
ELIYAZ MOMIN
39a56459a5 Merge "Revert "Tweak Modes layouts and use updated strings to match mocks"" into main 2024-07-31 15:40:04 +00:00
ELIYAZ MOMIN
9804955ad5 Revert "Tweak Modes layouts and use updated strings to match mocks"
This reverts commit 0359aaeb47.

Reason for revert: <Potential culprit for b/356564046  - verifying through ABTD before revert submission. This is part of the standard investigation process, and does not mean your CL will be reverted.>

Change-Id: I980838773078d822d20608e5975a26cf8dbed2be
2024-07-31 14:56:30 +00: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
Ioana Alexandru
5c642663de Merge "Consolidate statusbar/notification and notification/" into main 2024-07-05 08:35:54 +00: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
Julia Reynolds
ce4f2e9db6 Merge "Show bundles separately from other channels" into main 2024-07-03 00:02:33 +00: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
Ioana Alexandru
b2dfa6a123 Consolidate statusbar/notification and notification/
Move everything to notification/ in SettingsLib. Also have all
corresponding tests as deviceless tests in the correct directory.

Bug: NA
Flag: EXEMPT trivial refactor
Test: existing tests pass
Change-Id: I1b5650424e7ee2eff5d42995ec0ce85555d19c04
2024-07-02 16:49:18 +02: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