Commit Graph

136 Commits

Author SHA1 Message Date
Julia Reynolds
1b869f2845 Remove stale TODOs
These aren't in scope for the modes_ui release

Test: N/A
Flag: android.app.modes_ui
Bug: 354141067
Change-Id: I28887d766cde2d6a4e18a66a99d1625f80aa0667
2024-09-12 10:31:31 -04:00
Julia Reynolds
fcebcb2735 Remove unneeded setttings search info
Test: chage languages in Settings, search for a mode by name
Bug: 354141067
Flag: android.app.modes_ui

Change-Id: If12d76d268134e415510304278441a53d76af36d
2024-09-12 09:14:11 -04:00
Treehugger Robot
e6aaa5c87b Merge "Make ZenIconLoader injectable (in SystemUI)" into main 2024-08-29 22:59:49 +00:00
Yuri Lin
772928694f Merge "Add modes to Settings homepage." into main 2024-08-29 00:56:11 +00:00
Yuri Lin
3ccbb0ffa5 Add modes to Settings homepage.
Also moves the modes entrypoints out of the sub-pages it was previously in (notifications and sound settings).

Bug: 353700470
Test: manual by opening the homepage
Flag: android.app.modes_ui
Change-Id: I53124bfed25c43fc2dabaf9c43ce0513bbfc7377
2024-08-28 13:13:46 -04:00
Matías Hernández
227548d927 Make ZenIconLoader injectable (in SystemUI)
In settings, reduce calls to getInstance(), and pass it to preferences and their controllers instead.

Bug: 360399800
Test: atest ZenModesListItemPreferenceTest ZenModesListPreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: I318320575e3bd32b5d13a385fa644f8032484e1c
2024-08-28 14:10:20 +02:00
Treehugger Robot
78e191a69c Merge "Use ZenMode.getIconKey() and ZenIconLoader.getIcon() in Settings" into main 2024-08-27 23:24:11 +00:00
Matías Hernández
dd7f6b9163 Use ZenMode.getIconKey() and ZenIconLoader.getIcon() in Settings
Bug: 360399800
Bug: 361597532
Test: atest com.android.settings.notification.modes
Flag: android.app.modes_ui
Change-Id: I82baaeaaa0d722f8042c7ac6be33b8654418391f
2024-08-25 15:50:56 +02:00
Treehugger Robot
ba055aa8c2 Merge "Add log for enable/disable zen mode" into main 2024-08-23 18:38:19 +00:00
Treehugger Robot
bd74edd186 Merge "Add metrics for driving and bedtime interstitials" into main 2024-08-23 02:59:26 +00:00
Matías Hernández
f2f2da6147 Merge "Update Modes List if modes change in the background" into main 2024-08-22 18:49:18 +00:00
Matías Hernández
d8603124d1 Don't observe Modes changes if MODES_UI is disabled
The ZenModesLinkPreferenceController is present in the Notifications and Sound screens, and although isAvailable() is false when MODES_UI is not enabled, it was still registering the listener for Settings changes, and calling updateState().

Thus, Settings would (likely) crash if Zen settings change while the user is in one of those screens, due to not finding the manual rule.

Fixes: 360498255
Test: atest ZenSettingsObserverTest
Flag: android.app.modes_ui
Change-Id: I7741809fd0028aace6ac58992be965701e64a2e3
2024-08-22 17:48:53 +00:00
Matías Hernández
8c50cdc72a Update Modes List if modes change in the background
Fixes: 361518126
Test: manual
Flag: android.app.modes_ui
Change-Id: Ia00025adbb89ddc9163a9c50582cbcbd524231bb
2024-08-22 19:31:22 +02:00
Alexander Roederer
6d879999ea Add log for enable/disable zen mode
Adds logging for button on confirmation dialog after enable/disable zen
mode toggle is clicked.

Bug: 356154473
Flag: android.app.modes_ui
Test: build and flash
Change-Id: Ie1dc1c14e1519541da641a69a217cf8a5dfa54f2
2024-08-21 21:34:44 +00:00
Alexander Roederer
0a43ecdf2b Add metrics for driving and bedtime interstitials
Adds metrics categories for driving and bedtime interstitial pages,
which we want to distinguish from other types of interstitial pages.

Bug: 332937635
Flag: android.app.modes_ui
Test: Build and flash
Change-Id: I49f2fd9f86f7d2737aebd9ef9d8675787421cc09
2024-08-20 19:14:47 +00:00
Matías Hernández
ef4792c811 Merge "Flip the INTERRUPTION_FILTER_ALL switch" into main 2024-08-20 14:06:17 +00:00
Treehugger Robot
a6f3c74533 Merge "Flip order of start/finish" into main 2024-08-19 22:41:59 +00:00
Julia Reynolds
a2ca48723a Flip order of start/finish
Test: long press on a not setup mode tile on a large screen device
Flag: android.app.modes_ui
Fixes: 360898235
Change-Id: I1d4128c6ee3469dceb00e8cffdd5da7f4b3732b4
2024-08-19 21:18:08 +00:00
Treehugger Robot
4cffde0188 Merge "Use the new inspirational text in mode interstitials" into main 2024-08-16 18:52:44 +00:00
Matías Hernández
70a05ec421 Use the new inspirational text in mode interstitials
Also use the OTHER image for calendar/time, instead of UNKNOWN.

Bug: 332730534
Test: manual
Flag: android.app.modes_ui
Change-Id: I85a36d2d409ad3e9f3d5f70f95d90512443971a7
2024-08-16 19:50:17 +02:00
Matías Hernández
7883588653 Flip the INTERRUPTION_FILTER_ALL switch
Instead of "Limit what can notify you", title is now "Allow all notifications" and its behavior is reversed (switch ON hides people/apps/other).

Fixes: 360359116
Test: atest InterruptionFilterPreferenceControllerTest + manual
Flag: android.app.modes_ui
Change-Id: Ibb5334889662ec3aa778cd74c51506718ab0ebc7
2024-08-16 16:45:54 +00:00
Matías Hernández
0a5c7530ed Merge "Fix several issues related to CircularIconsPreference" into main 2024-08-16 16:44:24 +00:00
Matías Hernández
b676ca3a62 Fix several issues related to CircularIconsPreference
* Sometimes would cause an unending stream of accessibility events (particularly if starting off-screen). This would break TalkBack and anything that depends on UiAutomator (although the system itself took it like a champ).
* Sometimes would not load images (because the ViewTreeObserver would never fire onGlobalLayout after being added because measured width was 0, even though a new width was calculated later).
* Would not recalculate the number of icons that fit if the width changes after the first layout.

Combining ViewHolders with waiting for measuring and/or ViewTreeObservers was always a wonky approach, even though it should've worked in theory. This should be more robust.

Also fixes the unwanted animation on mode screen load related to the absence of the header name being applied a tad too late.

Fixes: 359948417
Fixes: 360072876
Fixes: 360328804
Test: atest SettingsRoboTests + manual + adb shell uiautomator events
Flag: android.app.modes_ui
Change-Id: I7e5dfbdab220d1ebc1c68e5e87ce544ee86b6a65
2024-08-16 16:20:38 +02:00
Matías Hernández
e7c670ea27 Merge "Fix refresh of "apps that can interrupt" segment" into main 2024-08-15 18:53:55 +00:00
Matías Hernández
195c698cdf Fix refresh of "apps that can interrupt" segment
Switching from Priority Apps to None would still show the icons of the priority apps. There were several minor things wrong:
* We were keeping the AppSession when a mode switches from "priority apps" to "none", and because onResume always fires the callback, we were loading the icons.
* Even when deactivating the session, its own onResume lifecycle listener was still firing one extra time, before we had a chance to deactivate it.

Also two minor improvements to CircularIconsPreference:
* Update mLoadedIcons when we early exit due to mIconSet having no items. Mostly for testing, since the icons wouldn't be visible anyway.
* Use notifyChanged() when we get a measured view, instead of holding a reference to the view. Technically the previous code violated the "shouldn't keep references to views outside of onBindViewHolder" (although I didn't see this having an effect in practice).

Fixes: 360077747
Test: atest ZenModeAppsLinkPreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: I6d4b7a344542da46f5ebfcd0774f1af27ed113ac
2024-08-15 17:40:36 +02:00
Alexander Roederer
84cb2f6a02 Merge "Adds Zen metrics categories" into main 2024-08-15 14:39:45 +00:00
Alexander Roederer
64593a873a Adds Zen metrics categories
Assigns metrics categories to all modes pages under
ZenModesListFragment. Includes new metrics categories where appropriate.

Bug: 332937635
Test: Build and flash
Flag: android.app.modes_ui
Change-Id: Ic19862ec194b40eae294d3c30240fe3f51304665
2024-08-14 20:27:13 +00:00
Matías Hernández
db50368328 Merge "Animate the color transition (active<->inactive) in the mode header icon" into main 2024-08-14 09:11:04 +00:00
Yuri Lin
24ba675fe4 Add images for interstitial pages.
This change removes the custom rounding of corners, as the provided images already have rounded corners.

Bug: 332730534
Test: manual (light & dark mode, various font/display sizes)
Flag: android.app.modes_ui
Change-Id: I71d0707554e5bc638add6a2907874e18e833da08
2024-08-13 16:46:05 -04:00
Matías Hernández
115d29e851 Animate the color transition (active<->inactive) in the mode header icon
Also, don't apply the layout params, etc on each call to updateState - once per displayPreference is enough.

Fixes: 356399449
Bug: 357861830
Test: manual
Flag: android.app.modes_ui
Change-Id: I6967ea1745377d0f514ca0f68101043f017a8fd7
2024-08-13 19:23:17 +02:00
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