Commit Graph

153 Commits

Author SHA1 Message Date
Geoffrey Boullanger
98cfa0af0a Add notifications toggle to Settings > Date and Time
Design doc: go/android-tznotifications
Test: atest and on device
Bug: 283267917
Bug: 283437447
Flag: com.android.server.flags.datetime_notifications

Change-Id: I91ea363a145d7184c997beae17862387114bc09b
2025-01-06 15:06:12 +00:00
Geoffrey Boullanger
b20399d91f Replaced exception with more elegant option in Time Settings
Currently, some controllers in the Date and Time settings page throw exceptions if a capability is not known. This would cause the Settings app to crash, so we are moving away from exception and replacing it with the deactivation of the controller.

Test: manual
Flag: EXEMPT refactor
Bug: 296835792
Change-Id: I56b01ec6d9eebf721deeb4f67aa177742482dd53
2024-12-18 16:28:41 +00:00
Geoffrey Boullanger
842a337291 Clean-up after com.android.settings.flags.revamp_toggles rollout
Flag: EXEMPT refactoring / flag clean-up
Test: refactoring CL. Existing unit tests still pass.
Bug: 296835792

Change-Id: Ib57ee270c8b5d540cb19997fe1863dd6d782cbe4
2024-11-21 15:39:28 +00:00
Treehugger Robot
f632d6274f Merge "fix crash in setting time zone" into main am: 15f88ddc70 am: 059f600c5e
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/3079352

Change-Id: I401e4197ddc6302133cfef4612e42eaa128dffa7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2024-11-05 01:26:51 +00:00
Treehugger Robot
15f88ddc70 Merge "fix crash in setting time zone" into main 2024-11-05 00:31:21 +00:00
Geoffrey Boullanger
b2dd2e3203 Updated toggles in Date and time settings page
Design doc: go/dd-android-settings-time-2024

Changes:
- toggling off "automatic time zone" now sets "use location" off and makes it unmodifiable
- removing "use locale default" for time format

Bug: 296835792
Test: on-device and atest
Flag: com.android.settings.flags.revamp_toggles
Change-Id: I31744f104fed06ee9980a6a0160501325175a02d
2024-10-11 17:24:47 +00:00
Geoffrey Boullanger
8b7399a8d9 Update titles and summaries of the Date and time settings page
Design doc: go/dd-android-settings-time-2024

This change covers Part 1, which consists of adding user-friendly summary under each toggle and rewording titles.

Bug: 296835792
Test: on-device and atest
Flag: EXEMPT resource only update
Change-Id: I0b685743599880fc1c4ad680eca9c36e4e64d0ff
2024-09-25 15:19:10 +00:00
Geoffrey Boullanger
766c7951fb Update the time zone picker to work with location containing diacritics
Currently, looking for a location containing diacritics (e.g. accents) requires the user to type in exactly those characters. With this change, diacritics are ignored and the strings are returned if they match (using startsWith).
For example, looking for "reun" will show you "Réunion".

Bug: b/364245352
Test: atest tests/robotests/src/com/android/settings/datetime/timezone/BaseTimeZoneAdapterTest.java
Change-Id: I507a9ebc1c830ad3162fb2382814935fc337328d
Flag: EXEMPT bugfix
2024-09-04 09:23:20 +00:00
Geoffrey Boullanger
970d364d07 Add updateState to AutoTimeZonePreferenceController
The summary (i.e. description under the toggle title in Android settings) from AutoTimeZonePreferenceController is only used in wifi-only devices, like Tangor. We have found that since V, the summary was no longer displayed in the Date and time settings page. This fix brings the summary back.

Bug: b/363176828
Test: tested on a Tangor tablet
Flag: EXEMPT bugfix

Change-Id: I1f118b8e1d5e0d8d1b0f5b515d79522b72fb4fa4
2024-08-30 16:03:22 +00:00
Edgar Wang
82bd2c75f7 Fix NPE in date time settings
- the callback is null when slice call setChecked() of PreferenceController

Bug: 343109816
Bug: 334924107
Test: robotest & manual
Flag: EXEMPT bug fix
Change-Id: Ia4d60455b6f14a46d00ae285017bc96ad4855679
2024-08-08 01:18:02 +00:00
Abhishek Gadewar
772b19f6ca fix crash in setting time zone
Summary: Fix a NPE when trying to set the time zone.

Test: Set the time zone. See it update without crashing.

Change-Id: I01c394f1a682844babc8119c86348b140eeb18ec
Signed-off-by: Abhishek Gadewar <abhishekgadewar@meta.com>
2024-07-09 12:19:39 -07:00
Neil Fuller
2a339992d3 Restore enterprise policy checks
Restore enterprise policy checks removed by commit
fdab44f9e7 and not since restored by other
changes.

Bug: 325886855
Bug: 316584466
Bug: 235445309
Test: Treehugger only
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:5d80553a155524e73713348fc11b9f98bee0308b)
Merged-In: Id3d79805bb2289b84ad34ac05a97e50f0410502f
Change-Id: Id3d79805bb2289b84ad34ac05a97e50f0410502f
2024-04-12 21:23:49 +00:00
Neil Fuller
5d80553a15 Restore enterprise policy checks
Restore enterprise policy checks removed by commit
fdab44f9e7 and not since restored by other
changes.

Bug: 325886855
Bug: 316584466
Bug: 235445309
Test: Treehugger only
Change-Id: Id3d79805bb2289b84ad34ac05a97e50f0410502f
2024-04-10 19:13:01 +01:00
Jason Chiu
0bd014c497 [Safer intents] Settings misc
To avoid implicit intents, make intents launch explicitly.

Test: build
Bug: 323061508
Change-Id: Ie19cbceb89842a75a180898abcce81b63c18d46c
2024-03-29 04:22:45 +00:00
Neil Fuller
43ded696dd UI changes to support time feedback
The feature is behind a release flag. It is also behind an experiment
flag so it can be trialed with Googlers before general release even
after being enabled in a release.

The feedback button only shows up if there is an intent URI configured,
which should be handled via an overlay. The design means that the intent
is potentially dependent on the manufacturer (good!), though I expect we
will suggest a standard one for GMS devices so we get feedback from a
variety of devices with different form factors / capabilities.
In this default, GMS core (Google Play Services) will handle the intent
and take the user through a feedback UI flow.

Testing:

To enable the button you need to build with one of release variants that
supports dynamic flags, e.g. trunk_food.

Then release flag:
$ adb shell device_config put location com.android.settings.flags.datetime_feedback true

It still won't work without the experiment flag:
$ adb shell device_config put settings_ui time_help_and_feedback_feature_supported true

Finally, the settings entry will launch an intent when pressed which has
to have a receiver. The receiver will be in GMS core but will be subject
to its own review / launch process. Until then, this feature will remain
quiet, biding its time.

Bug: 283239837
Test: Manual (see above)
Test: atest SettingsRoboTests:com.android.settings.datetime
Change-Id: I68798798fc0a47ae4c6755174ce509fbaee24142
2024-03-25 19:00:47 +00:00
Edgar Wang
d0fcba932c Fix time zone settings restriction logic
- Time zone should be restricted when "no_config_date_time" enabled

Bug: 316584466
Change-Id: I90dfc2c84ef0b2155740c7b890f17376c9e57e51
Test: manual via TestDPC
2024-01-11 11:18:52 +00:00
Edgar Wang
fdab44f9e7 Refactor Date & Time Settings
- Rid off AbstractPreferenceController

Test: robotest
Bug: 235445309
Change-Id: I61118a0ff580231973509c06e84e7088dba897f5
2023-11-29 18:35:43 +08:00
Chaohui Wang
15ca95a31b Migrate to TwoStatePreference
SwitchPreference and SwitchPreferenceCompat are both TwoStatePreference.

Using TwoStatePreference in Java will helps migration in the future.

Bug: 306771414
Test: manual - check Settings pages
Change-Id: I84e1d7b09451106797c2b23d127855c6976678ca
2023-10-23 09:28:57 +00:00
Neil Fuller
7ddbef73f0 Fix a crash due to absence of no-arg fragment init
Fix a crash due to absence of no-arg fragment constructor.

e.g. if the dialog were shown and the device were rotated, the dialog
could not be restored.

Bug: 272439218
Test: Manual with repro steps before and after
Change-Id: Idca052acff709af132fa72f7919aa71fe8060595
2023-03-10 15:16:05 +00:00
Neil Fuller
37996acd7c Further status logic tweaks
Change the SettingsUI logic slightly: All other things being equal, pick
the "worst" location dependency status to show. Some renaming and
annotations for clarity.

Also fixes the mocking behavior in the tests around resources, which
were accidentally using the real strings and therefore dependent on real
resource string values. Tests are made more explicit.

Bug: 266921482
Test: atest tests/robotests/src/com/android/settings/datetime/LocationProviderStatusPreferenceControllerTest.java
Change-Id: Ifd96c543dad692884be23bf94e3f1294eed291d5
2023-02-13 15:03:32 +00:00
Neil Fuller
fc4f2ce81d Tweak status display logic and tests
The existing logic and tests looks incorrect. Tests have been tidied up
to reflect real cases. For example, it's not really possible for the
provider to report being "blocked", but for it to report it is "certain"
at the same time.

Bug: 266921482
Test: atest tests/robotests/src/com/android/settings/datetime/LocationProviderStatusPreferenceControllerTest.java
Change-Id: I1a0faa44ed7dd09828ff758db9e40f5d5e010ab0
2023-02-13 15:03:15 +00:00
Neil Fuller
4550e939bb Merge "(Re)Introduce "enabled by admin" UI state" 2023-02-03 10:14:03 +00:00
Neil Fuller
8e727b4dba (Re)Introduce "enabled by admin" UI state
(Re)Introduce "enabled by admin" / "disabled by admin" SettingsUI state.

ag/18665634 changed behavior: When enterprise policy restricts the
user's ability to change the "auto time" and "auto time zone" toggle,
the toggle was hidden rather than "visible but disabled".

Bug 266693620 demonstrates testers are checking for the behavior.

This commit returns the old behavior for the "auto time" and "auto time
zone" SettingUI behavior, i.e. the user can see the toggle and its
setting value, but is told that it is under admin control and the
current setting value.

See the bug for more info / historic behavior analysis.

Bug: 266693620
Test: Manual testing with TestDPC
Test: atest to confirm existing tests do not fail
Change-Id: I0a605054312547fbd44fc34025ee36b075e05e01
2023-02-01 14:02:17 +00:00
Neil Fuller
85327e0ed8 Add "Use location" state to TimeZoneCapabilities
Add the user's "Use location" state to TimeZoneCapabilities. This
information is available anyway and saves the SettingsUI needing to call
LocationManager directly (with the small possibility it would get an
inconsistent answer).

Bug: 262407244
Test: atest tests/robotests/src/com/android/settings/datetime/
Change-Id: I49d4e41b27f9817b3189a7643c24237603e36396
2023-01-26 14:52:31 +00:00
David Gutierrez
9ebb2fce7a Automatic timezone support on non-telephony devices
Adding to the Settings UI in order to simplify timezone on non-telephony devices.

Test: on-device testing, additional unit tests
Change-Id: I58ece9542a7b80823092bd082d4bd8c224b29634
Bug: 253015306
2022-12-21 16:39:32 +00:00
Arc Wang
12d4b78473 Merge "Extend SearchView width" into tm-qpr-dev am: 049deec9b5 am: 4cfe8b8204
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/20337665

Change-Id: I7a3bdcfa520fe402da940e426a89b3ffd2c2b1e5
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-11-02 08:41:11 +00:00
Arc Wang
4cfe8b8204 Merge "Extend SearchView width" into tm-qpr-dev am: 049deec9b5
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/20337665

Change-Id: I2f7807561257dc18be802f0acc90cce56ca71b98
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-11-02 08:07:13 +00:00
Arc Wang
0243771025 Extend SearchView width
To align SearchView x button with right border.

Bug: 254403811
Test: manual,
      Settings > Apps > See all apps > tap the search icon >
      input something and observe.
Change-Id: I5146c9ffb3c5177926e75f673497408092f6c065
2022-11-01 10:26:17 +00:00
Neil Fuller
f3c4f68abf Track method renames
Track method renames:

getSuggestManualTimeZoneCapability() ->
getSetManualTimeZoneCapability()

getSuggestManualTimeCapability() ->
getSetManualTimeCapability()

Assuming that TimeManager.setManualTime() and
TimeManager.setManualTimeZone() become system APIs in the next release,
they can be used in SettingsUI in place of
TimeDetector.suggestManualTime() and
TimeZoneDetector.suggestManualTimeZone() (in a later commit).

Bug: 236612872
Test: build only
Change-Id: Ifffc022c109fa68ae705e32400db9bfc8a1632ca
2022-10-03 13:59:00 +01:00
Sunny Shao
151a088094 Fix the header can't be scrolling problem in landscape mode
- Settings header is restricted scrolling by this ag/15029686
- To void some pages can't show the contain part while heading unscrolling.
  We allow the header can be scrolling in the landscape mode.

Fixes: 207353353
Test: make RunSettingsRoboTests -j
Change-Id: Ice97c6244716d4768167feb78588807d13b06a94
2022-08-11 15:33:45 +08:00
Neil Fuller
d0a3929327 Change high/low bound logic for manual date/time
This commit moves knowledge of the upper / lower bounds for valid manual
date suggestions to (internal) API calls.

It adds a test to confirm the API calls are used to configure the date
dialog.

Further, it removes redundant filtering from the client that would
prevent suggestion calls being made if the settings UI considers them
invalid. Year bounds are already used to limit the UI entry, and the
system server will return false from the service call if the suggestion
is invalid, though the SettingsUI doesn't do anything (behaviorally)
with the false before or after this change.  After this change it is
logged.

The goal of this change is to allow users with devices that don't have
the Y2038 issue to enter dates > 2037. This could have been done with
a smaller change, but the use of the new internal class
TimeDetectorHelper means that the bounds logic is in one place. The
lower bound (on mobile devices) can now be changed relatively easily by
touching one class.

Bug: 228967927
Test: m RunSettingsRoboTests ROBOTEST_FILTER="com.android.settings.datetime"
Change-Id: Iaf1ca8220e0e96773aa71b595da9c1ba1e50d59d
2022-07-19 13:43:36 +01:00
Sunny Shao
d46dff8d4f Fix UI flicker problem and update wordings
- "Set time zone automatically" changes to "Set automatically".
- "Use location to set time zone" changes to "Use location"
- Add a new summary text with "Location may be used to set time zone".

Fixes: 233968737
Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.datetime
Change-Id: Ia16c428e906cda4ebe052bad83c3f574075a7a64
2022-06-23 10:52:23 +08:00
Neil Fuller
579a19a793 Switch auto time setting to use APIs
Switch auto time setting to use TimeManager APIs instead of low-level
direct settings access.

This makes the AutoTimePreferenceController approach the same as
AutoTimeZonePreferenceController. Most of the logic about what to
display and whether toggles are enabled is moved to the service.

This change has the side effect of adding support in SettingsUI for
devices with no auto time detection mechanism configured at all, i.e.
the auto time toggle will stop being shown in SettingsUI. There are no
known devices that require this currently, but it is a theoretical
possibility if config.xml is configured in particular ways.

Bug: 172891783
Test: Manual testing with different settings for "time origin
priorities" (i.e. empty, non-empty)
Test: m ROBOTEST_FILTER=com.android.settings.datetime RunSettingsRoboTests -j40

Change-Id: I4112fb51adb0d06a1dbc39a44ea109d6df899153
2022-06-06 12:41:11 +01:00
Neil Fuller
6187efa066 Merge "Capitalize TZ display name strings" am: 6a44151bc1 am: 3bb5fc5da8 am: 32a00bf719 am: 4c44d26387
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/2055886

Change-Id: Ica49004e2863bf98532a79214cb60b82544e8ddd
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-04 05:06:18 +00:00
Neil Fuller
6a44151bc1 Merge "Capitalize TZ display name strings" 2022-05-03 19:22:03 +00:00
Victor Chang
fbad0f3ca9 Merge "Titlecasing time zone summary" am: 1d6e9cfdf2 am: 16aca1db9f am: e12caf5c9b am: 09a7871c30
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/2077567

Change-Id: I7d8725c0010ec50450cc12e9216dc28cc6cd40d7
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
2022-05-03 14:45:43 +00:00
Victor Chang
20e9b76818 Titlecasing time zone summary
Additional fix:
1. Fixed the SpannableUtil.getResourcesText to actually
preserve Spannable (TtsSpan in this use case)  during formatting.

Bug: 185453652
Test: make RunSettingsRoboTests ROBOTEST_FILTER=com.android.settings.datetime.timezone
Change-Id: Iae5e1d4261ec0a34222ae1d042c7f3f027f2e512
2022-04-29 17:06:46 +01:00
Neil Fuller
3fe57a8ac3 Fix logic used for auto time zone settings
Fix the logic used that determines whether the automatic time
zone detection toggle is available in the Settings UI Date & Time
screen. Also, ensure that the TimeZonePreferenceController uses correct
logic for whether the user can manually enter a time zone.

This change migrates the controllers to use a existing high-level
TimeManager API rather than (incorrectly) duplicating in Settings UI the
logic for whether time zone detection is supported / enabled.

Without this change, WiFi-only devices _with_ location-based time zone
detection enabled would incorrectly hide the "auto time zone" toggle,
which would have the knock-on of making it look like the user is allowed
to enter a time zone manually when they aren't (because it is
enabled/disabled based on the presence of the toggle).

That toggle still needs to be present while there is a possible time
zone detection mechanism. All the (quite complex) logic around this is
already considered by the TimeManager API.

Possible side effects:

This change decouples the "does the toggle show true or false?"
(isEnabled()) from the "should the toggle be shown at all?"
(isAvailable()) logic by removing a call to isAvailable() inside of
isEnabled(). This is to avoid making multiple (probably more expensive
than what it was doing before) calls to the time_zone_detector service,
and avoid the extra complexity of caching / cache invalidation that
would be needed to mitigate it. Previously, as a result of the call to
isAvailable(), isEnabled() would always return false when mIsFromSUW is
true, but now it will return the underlying value of the device's
auto_time_zone setting. This means that if the UI is changed in future
to render a visible-but-can't-be-changed-by-the-user toggle for auto
time zone, it will display the current setting value, which is perfectly
reasonable.  It is assumed it will have no other side effects.

The AutoTimeZonePreferenceControllerTest.isFromSUW_notEnable test has
been changed to reflect the change in behavior. Various name changes
made to tests to reflect the new behavior.

Bug: 228247623
Bug: 186625820
Bug: 172891783
Test: treehugger
Test: Manual test on a device with telephony
Test: m ROBOTEST_FILTER=AutoTimeZonePreferenceControllerTest RunSettingsRoboTests -j40
Test: m ROBOTEST_FILTER=TimeZonePreferenceControllerTest RunSettingsRoboTests -j40
Change-Id: I4c7608e8645eee5994c8ecf85a14a27d3278ac04
(cherry picked from commit 7a8ac683d4)
2022-04-19 15:27:29 +00:00
Neil Fuller
e7fd120d8e Capitalize TZ display name strings
Capitalize Settings UI time zone display name strings for languanges
like Polish for standalone locations like summaries and lists. The
motivating example case is the string for "Coordinated Universal Time"
in Polish, which is not capitalized in CLDR, as they capitalize for the
middle of sentences by default. In English, Coordinated Universal Time
is already capitalized, but the Polish string is not.

With this commit all "display name"-like strings have been capitalized
(region names, exemplar locations, time zone names like
"Coordinated Universal Time" and "British Summer Time") for
completeness. For the Polish case, many are already capitalized, but
capitalizing the first letter is therefore a no-op. The
"GMT+xx:xx"-style strings have not been changed.

Bug: 190109975
Test: Visual inspection in English and Polish of UTC, United States,
Russia in the time zone picker and the date & time screen on mobile

Change-Id: I57d915ac1e30e22cc05e605fcb7d46b102fa8ce1
2022-04-05 15:51:05 +01:00
Jason Chiu
56dde819dc Merge "Define a constant Sliceable#NO_RES for no resource cases" into sc-v2-dev am: 1565bba600
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/16177442

Change-Id: I6a3448e6e54666b45f6f67288593034a03d50d64
2021-11-03 06:54:55 +00:00
Jason Chiu
9fc0f18181 Define a constant Sliceable#NO_RES for no resource cases
Fix: 204733076
Test: build
Change-Id: Ifa3b9db0e915a3ec056ad68a9a1862811594d423
2021-11-03 12:23:49 +08:00
Jason Chiu
026b1b5df6 Merge changes from topic "slice-highlight" into sc-v2-dev am: 6821b6be32
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/16151654

Change-Id: Ib03d41631d8bf961fa3ff3957eb5452411da7792
2021-11-02 02:28:16 +00:00
Jason Chiu
2989c50a23 Add highlight menu keys for all toggle pref controllers and custom slices
Bug: 204695404
Test: manual, robotest build pass, unit
Change-Id: Iad2e28ada8ddb766ffa7eff2c8dc581250cbd6f8
2021-11-01 15:00:18 +08:00
vichang
e6bf1a83d8 Merge "Replace @CorePlatformApi APIs usages in TimeZoneInfoPreferenceControllerTest" am: 3166166bdd
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/1831314

Change-Id: I458bf767bbea8b5921f00afae884d309d270f7b0
2021-09-21 10:52:53 +00:00
vichang
3166166bdd Merge "Replace @CorePlatformApi APIs usages in TimeZoneInfoPreferenceControllerTest" 2021-09-21 10:42:27 +00:00
Victor Chang
fc4589448b Replace @CorePlatformApi APIs usages in TimeZoneInfoPreferenceControllerTest
The time zone transitions can be obtained via the public API
ZoneId.getRules() instead.

Bug: 119751170
Test: atest SettingsRoboTests
     com.android.settings.datetime.timezone.TimeZoneInfoPreferenceControllerTest passes
Change-Id: I2c7864580b2a36b725ee250253e97f6cc86d72a4
2021-09-20 15:57:42 +01:00
Neil Fuller
d2eca211d4 Merge "Swap ownership to mingaleev@" am: f6fe44dc91
Original change: https://android-review.googlesource.com/c/platform/packages/apps/Settings/+/1824113

Change-Id: I9be5d173953df0a90ee1309feceed35f9240c18c
2021-09-13 11:17:50 +00:00
Neil Fuller
b46adff0f4 Swap ownership to mingaleev@
BUG=189810551

Change-Id: I6304545540947d6695117753309c80b27cf2669a
2021-09-10 12:20:39 +00:00
Tsung-Mao Fang
232b3ac12a Disable the scrollable ability on app bar area
As title, we do not allow user can scroll app bar while
the search menu is expanding.
So, we can ignore all drag events on app bar.

Test: Can not scroll on the app bar area
Fix: 181741353
Change-Id: I20c0b69059cdc4d13a15abd810a725d4591f6396
2021-06-17 19:29:25 +08:00
Tsung-Mao Fang
11c4b2c51e Remove the large space when searching region list
Collapse the tool bar when we're doing search for
a better user experience.
And we don't allow user can expand the tool bar at this moment
since it will see a large space at this moment.

Fix: 181741353
Test: Open the page and don't see a huge space now.
Change-Id: Iec5ebe9b22a2aad15dc8cf90113a64c358ee447e
2021-06-08 11:44:38 +00:00