Commit Graph

151 Commits

Author SHA1 Message Date
Matías Hernández
154a91fc7e Merge "Use TextInputLayout for the name field in the create/rename mode page" into main 2024-10-03 20:45:04 +00:00
Julia Reynolds
8c2312d8ab Update dependent logic in modes vis page
If the list isn't visible, we shouldn't allow HUNs to be

Test: ZenModeNotifVisFragmentTest, manual
Fixes: 367222597
Flag: EXEMPT bugfix
Change-Id: I1dc72061dfb99aed8b644c703214b17d62b0532e
2024-10-03 15:28:50 +00:00
Matías Hernández
b1e28233c1 Use TextInputLayout for the name field in the create/rename mode page
In addition to looking nicer, this fixes two accessibility issues ("no hint when text is entered" and "reason for disabled button is unclear").

This requires a bit of theme merging black magic, because TextInputLayout requires a Theme.AppCompat descendant, which the Settings theme isn't.

Fixes: 356398157
Fixes: 370654542
Fixes: 369942776
Test: atest ZenModeEditNamePreferenceControllerTest
Flag: android.app.modes_ui
Change-Id: I92d8ec044dabc6daed5d755e206120ec7abc143e
2024-10-03 14:14:34 +02:00
Treehugger Robot
2d9dc0521f Merge "Set content description for the "settings" of starred contacts, priority conversations, etc" into main 2024-10-02 00:51:31 +00:00
Matías Hernández
58a110bc48 Set content description for the "settings" of starred contacts, priority conversations, etc
Fixes: 368124250
Test: manual, with Talkback
Flag: android.app.modes_ui
Change-Id: Ib4e8bdd5ea0931db2049925f82696d3a55f35bcb
2024-10-01 18:51:19 +02:00
Matías Hernández
78367de795 Fix a11y readout of the day toggles in Time Schedule of Modes
Content description (full day name) replaces TextOn/TextOff (day name initial), and the state description no longer has the day name. As a result:
* the initial readout changes from "Monday, off, M, Switch" to "Off, Monday, Switch"
* when toggling, the name of the day is no longer repeated, and just "On/Off" is announced.

Fixes: 370360007
Test: manual, with Talkback
Flag: android.app.modes_ui
Change-Id: I57bbd7034e1af2836582720a7f4871a79d6644ab
2024-09-30 17:47:36 +02:00
Matías Hernández
58b04ae7cf Fix mode icon sharing in modes list
Modes sharing the same icon would also share the applied tint (e.g. all with the "active" tint even if only the last one of them is active).

(Although it should never happen, also removed a potential NPE for mode icons without ConstantState).

Fixes: 367131481
Test: manual
Flag: android.app.modes_ui
Change-Id: I56867783310ea57f2e92c866ff0b5b53ac86bf37
2024-09-20 11:47:59 +02:00
Treehugger Robot
ad856d326f Merge changes from topic "b361144180-PreferenceControllerMixin" into main
* changes:
  Move ListAddMode PrefController key to constructor
  ZenModesListAdd extend BasePreferenceContoller
2024-09-17 17:28:27 +00:00
Alexander Roederer
c6c5c1dfad Move ListAddMode PrefController key to constructor
Passes the key for the ZenModesListAddModePreferenceController into the
constructor, to be supplied from the Fragment.

Flag: android.app.modes_ui
Bug: 361144180
Test: atest ZenModesListAddModePreferenceControllerTest
Change-Id: I23d5c11f8676b9ed2bde807e24f20346444e7963
2024-09-17 16:15:00 +00:00
Alexander Roederer
3791aa5ee9 ZenModesListAdd extend BasePreferenceContoller
Makes ZenModesListAddModePreferenceController extend
BasePreferenceController. This should fix warning statements, and has
the effect of adding "Create your own mode" to the Settings Search menu.

Test: build+flash
Bug: 361144180
Flag: android.app.modes_ui
Change-Id: Ic8675420b831818f658506f36938f38e803cc9aa
2024-09-17 03:20:39 +00:00
Julia Reynolds
b8533bad72 Merge "Remove stale TODOs" into main 2024-09-12 15:56:43 +00:00
Treehugger Robot
4b8d2cacd5 Merge "Remove unneeded setttings search info" into main 2024-09-12 15:53:55 +00:00
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
Matías Hernández
c43be041f5 Merge "Support (non-editable) display of DND with a filter != PRIORITY" into main 2024-09-03 18:45:16 +00:00
Matías Hernández
b210f35a76 Prevent "new mode" and "choose schedule" dialogs from being created without a listener
This can happen if the activity is recreated; our approach doesn't support this case very well. With this change, the dialog is not reshown when the activity is recreated, which is not optimal but better than crashing (as it does today). There is no lost work because it's the first choice, and the follow-on steps (icon picker, etc) can be recreated without problems.

Fixes: 359746551
Test: manual, with don't keep activities
Flag: android.app.modes_ui
Change-Id: I84bdeb0007e8c50ec9dd8af61991c7e55ddb8298
2024-09-02 18:29:23 +02:00
Matías Hernández
50c954923f Support (non-editable) display of DND with a filter != PRIORITY
Whenever setInterruptionFilter() is called with NONE or ALARMS, the Do Not Disturb mode now shows the current policy (nothing allowed or alarms/media allowed), instead of the normal PRIORITY policy. This policy is read-only in the UI since it cannot be customized.

This should be, or at least become, pretty rare (with small exceptions, apps targeting V that call setInterruptionFilter() will use an implicit mode instead of changing the global zen mode, plus using these filters is quite nonstandard in itself).

Fixes: 361586248
Test: atest & manual (toggling DND via cmd shell)
Flag: android.app.modes_ui
Change-Id: If2439480235d30aa310ad8925341183b9761784c
2024-08-30 15:03:03 +02: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