From cdb3551be104b656b7ccd2c6b89496dcccb15133 Mon Sep 17 00:00:00 2001 From: Yu-Han Yang Date: Thu, 4 Mar 2021 10:53:39 -0800 Subject: [PATCH] Add "See All" page for Recent Location Access Screenshots: http://shortn/_UPy8KFSeSj Bug: 180533061 Test: manual on device Change-Id: Ib77bc0705835520ed1a2d3b7f662088ed838e53e --- res/values/strings.xml | 6 +- res/xml/location_recent_access_see_all.xml | 20 ++++ res/xml/location_settings.xml | 7 ++ res/xml/location_settings_personal.xml | 11 +- res/xml/location_settings_workprofile.xml | 13 ++- .../ProfileFragmentBridge.java | 6 +- ...ileSelectRecentLocationAccessFragment.java | 46 ++++++++ ...entLocationAccessPreferenceController.java | 4 + .../RecentLocationAccessSeeAllFragment.java | 108 +++++++++++++++++ ...ationAccessSeeAllPreferenceController.java | 110 ++++++++++++++++++ .../search/CustomSiteMapRegistry.java | 4 +- .../search/CustomSiteMapRegistryTest.java | 4 +- 12 files changed, 326 insertions(+), 13 deletions(-) create mode 100644 res/xml/location_recent_access_see_all.xml create mode 100644 src/com/android/settings/dashboard/profileselector/ProfileSelectRecentLocationAccessFragment.java create mode 100644 src/com/android/settings/location/RecentLocationAccessSeeAllFragment.java create mode 100644 src/com/android/settings/location/RecentLocationAccessSeeAllPreferenceController.java diff --git a/res/values/strings.xml b/res/values/strings.xml index c77960f36db..bde20e85c3d 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -3985,7 +3985,7 @@ Location for work profile - App access to location + Manage location permissions Location is off - Recent location access + Past 24 hour access + + See all View details + + + diff --git a/res/xml/location_settings.xml b/res/xml/location_settings.xml index 7a791360b28..cf80debc695 100644 --- a/res/xml/location_settings.xml +++ b/res/xml/location_settings.xml @@ -27,6 +27,13 @@ settings:controller= "com.android.settings.location.RecentLocationAccessPreferenceController"/> + + + + + + recentLocationAccesses = new ArrayList<>(); + for (RecentLocationAccesses.Access access : mRecentLocationAccesses.getAppListSorted( + mShowSystem)) { + if (isRequestMatchesProfileType(userManager, access, mType)) { + recentLocationAccesses.add(access); + } + } + + if (recentLocationAccesses.isEmpty()) { + // If there's no item to display, add a "No recent apps" item. + final Preference banner = new AppPreference(mContext); + banner.setTitle(R.string.location_no_recent_apps); + banner.setSelectable(false); + mCategoryAllRecentLocationAccess.addPreference(banner); + } else { + for (RecentLocationAccesses.Access request : recentLocationAccesses) { + final Preference appPreference = createAppPreference( + preference.getContext(), + request, mFragment); + mCategoryAllRecentLocationAccess.addPreference(appPreference); + } + } + } + + /** + * Initialize {@link ProfileSelectFragment.ProfileType} of the controller + * + * @param type {@link ProfileSelectFragment.ProfileType} of the controller. + */ + public void setProfileType(@ProfileSelectFragment.ProfileType int type) { + mType = type; + } + + /** + * Set the value of {@link #mShowSystem}. + */ + public void setShowSystem(boolean showSystem) { + mShowSystem = showSystem; + if (mPreference != null) { + updateState(mPreference); + } + } +} diff --git a/src/com/android/settings/search/CustomSiteMapRegistry.java b/src/com/android/settings/search/CustomSiteMapRegistry.java index cd716fafd2c..84488469807 100644 --- a/src/com/android/settings/search/CustomSiteMapRegistry.java +++ b/src/com/android/settings/search/CustomSiteMapRegistry.java @@ -27,7 +27,7 @@ import com.android.settings.fuelgauge.PowerUsageSummary; import com.android.settings.gestures.GestureNavigationSettingsFragment; import com.android.settings.gestures.SystemNavigationGestureSettings; import com.android.settings.location.LocationSettings; -import com.android.settings.location.RecentLocationRequestSeeAllFragment; +import com.android.settings.location.RecentLocationAccessSeeAllFragment; import com.android.settings.network.NetworkDashboardFragment; import com.android.settings.notification.zen.ZenModeBlockedEffectsSettings; import com.android.settings.notification.zen.ZenModeRestrictNotificationsSettings; @@ -57,7 +57,7 @@ public class CustomSiteMapRegistry { CUSTOM_SITE_MAP.put( WifiSettings.class.getName(), NetworkDashboardFragment.class.getName()); CUSTOM_SITE_MAP.put(PowerUsageAdvanced.class.getName(), PowerUsageSummary.class.getName()); - CUSTOM_SITE_MAP.put(RecentLocationRequestSeeAllFragment.class.getName(), + CUSTOM_SITE_MAP.put(RecentLocationAccessSeeAllFragment.class.getName(), LocationSettings.class.getName()); CUSTOM_SITE_MAP.put(UsbDetailsFragment.class.getName(), ConnectedDeviceDashboardFragment.class.getName()); diff --git a/tests/unit/src/com/android/settings/search/CustomSiteMapRegistryTest.java b/tests/unit/src/com/android/settings/search/CustomSiteMapRegistryTest.java index 1a4737b2876..b8c3d57f445 100644 --- a/tests/unit/src/com/android/settings/search/CustomSiteMapRegistryTest.java +++ b/tests/unit/src/com/android/settings/search/CustomSiteMapRegistryTest.java @@ -29,7 +29,7 @@ import com.android.settings.fuelgauge.PowerUsageSummary; import com.android.settings.gestures.GestureNavigationSettingsFragment; import com.android.settings.gestures.SystemNavigationGestureSettings; import com.android.settings.location.LocationSettings; -import com.android.settings.location.RecentLocationRequestSeeAllFragment; +import com.android.settings.location.RecentLocationAccessSeeAllFragment; import com.android.settings.network.NetworkDashboardFragment; import com.android.settings.notification.zen.ZenModeBlockedEffectsSettings; import com.android.settings.notification.zen.ZenModeRestrictNotificationsSettings; @@ -73,7 +73,7 @@ public class CustomSiteMapRegistryTest { @Test public void shouldContainRecentLocationRequestSeeAllFragmentPairs() { assertThat(CustomSiteMapRegistry.CUSTOM_SITE_MAP.get( - RecentLocationRequestSeeAllFragment.class.getName())).isEqualTo( + RecentLocationAccessSeeAllFragment.class.getName())).isEqualTo( LocationSettings.class.getName()); }