Merge "Revert "Remove "See all" button"" into sc-dev
diff --git a/res/xml/location_settings.xml b/res/xml/location_settings.xml
index a950b3a..dc176d9 100644
--- a/res/xml/location_settings.xml
+++ b/res/xml/location_settings.xml
@@ -27,6 +27,14 @@
         settings:controller=
             "com.android.settings.location.RecentLocationAccessPreferenceController"/>
 
+    <Preference
+        android:key="recent_location_access_see_all_button"
+        android:title="@string/location_recent_location_access_see_all"
+        android:icon="@drawable/ic_chevron_right_24dp"
+        android:fragment="com.android.settings.location.RecentLocationAccessSeeAllFragment"
+        settings:controller="com.android.settings.location.RecentLocationAccessSeeAllButtonPreferenceController"
+        settings:searchable="false"/>
+
     <PreferenceCategory
         android:key="location_advanced_settings"
         android:layout="@layout/preference_category_no_label"
diff --git a/res/xml/location_settings_personal.xml b/res/xml/location_settings_personal.xml
index a798899..726a96c 100644
--- a/res/xml/location_settings_personal.xml
+++ b/res/xml/location_settings_personal.xml
@@ -28,6 +28,14 @@
         settings:controller=
             "com.android.settings.location.RecentLocationAccessPreferenceController"/>
 
+    <Preference
+        android:key="recent_location_access_see_all_button"
+        android:title="@string/location_recent_location_access_see_all"
+        android:icon="@drawable/ic_chevron_right_24dp"
+        android:fragment="com.android.settings.location.RecentLocationAccessSeeAllFragment"
+        settings:controller="com.android.settings.location.RecentLocationAccessSeeAllButtonPreferenceController"
+        settings:searchable="false"/>
+
     <!-- This preference category gets removed if new_recent_location_ui is disabled -->
     <Preference
         android:key="app_level_permissions"
diff --git a/res/xml/location_settings_workprofile.xml b/res/xml/location_settings_workprofile.xml
index 62ec0cb..99ccf14 100644
--- a/res/xml/location_settings_workprofile.xml
+++ b/res/xml/location_settings_workprofile.xml
@@ -28,6 +28,15 @@
         settings:controller=
             "com.android.settings.location.RecentLocationAccessPreferenceController"/>
 
+    <Preference
+        android:key="recent_location_access_see_all_button"
+        android:title="@string/location_recent_location_access_see_all"
+        android:icon="@drawable/ic_chevron_right_24dp"
+        android:fragment="com.android.settings.location.RecentLocationAccessSeeAllFragment"
+        settings:controller="com.android.settings.location.RecentLocationAccessSeeAllButtonPreferenceController"
+        settings:forWork="true"
+        settings:searchable="false"/>
+
     <com.android.settingslib.RestrictedSwitchPreference
         android:key="managed_profile_location_switch"
         android:title="@string/managed_profile_location_switch_title"
diff --git a/src/com/android/settings/location/LocationPersonalSettings.java b/src/com/android/settings/location/LocationPersonalSettings.java
index ab392d6..0553d96 100644
--- a/src/com/android/settings/location/LocationPersonalSettings.java
+++ b/src/com/android/settings/location/LocationPersonalSettings.java
@@ -51,6 +51,7 @@
 
         use(AppLocationPermissionPreferenceController.class).init(this);
         use(LocationSettingsFooterPreferenceController.class).init(this);
+        use(RecentLocationAccessSeeAllButtonPreferenceController.class).init(this);
 
         final int profileType = getArguments().getInt(ProfileSelectFragment.EXTRA_PROFILE);
         final RecentLocationAccessPreferenceController controller = use(
diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java
index 093dc85..fe3cf30 100644
--- a/src/com/android/settings/location/LocationSettings.java
+++ b/src/com/android/settings/location/LocationSettings.java
@@ -83,6 +83,7 @@
 
         use(AppLocationPermissionPreferenceController.class).init(this);
         use(RecentLocationAccessPreferenceController.class).init(this);
+        use(RecentLocationAccessSeeAllButtonPreferenceController.class).init(this);
         use(LocationForWorkPreferenceController.class).init(this);
         use(LocationSettingsFooterPreferenceController.class).init(this);
     }
diff --git a/src/com/android/settings/location/LocationWorkProfileSettings.java b/src/com/android/settings/location/LocationWorkProfileSettings.java
index f50ba90..24c44f3 100644
--- a/src/com/android/settings/location/LocationWorkProfileSettings.java
+++ b/src/com/android/settings/location/LocationWorkProfileSettings.java
@@ -51,6 +51,7 @@
 
         use(AppLocationPermissionPreferenceController.class).init(this);
         use(LocationForWorkPreferenceController.class).init(this);
+        use(RecentLocationAccessSeeAllButtonPreferenceController.class).init(this);
         use(LocationSettingsFooterPreferenceController.class).init(this);
 
         final int profileType = getArguments().getInt(ProfileSelectFragment.EXTRA_PROFILE);
diff --git a/src/com/android/settings/location/RecentLocationAccessSeeAllButtonPreferenceController.java b/src/com/android/settings/location/RecentLocationAccessSeeAllButtonPreferenceController.java
new file mode 100644
index 0000000..68cde63
--- /dev/null
+++ b/src/com/android/settings/location/RecentLocationAccessSeeAllButtonPreferenceController.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.settings.location;
+
+import android.content.Context;
+
+import androidx.preference.Preference;
+import androidx.preference.PreferenceScreen;
+
+/**
+ * Preference controller that handles the "See All" button for recent location access.
+ */
+public class RecentLocationAccessSeeAllButtonPreferenceController extends
+        LocationBasePreferenceController {
+
+    private Preference mPreference;
+
+    /**
+     * Constructor of {@link RecentLocationAccessSeeAllButtonPreferenceController}.
+     */
+    public RecentLocationAccessSeeAllButtonPreferenceController(Context context, String key) {
+        super(context, key);
+    }
+
+    @Override
+    public void displayPreference(PreferenceScreen screen) {
+        super.displayPreference(screen);
+        mPreference = screen.findPreference(getPreferenceKey());
+    }
+
+    @Override
+    public void onLocationModeChanged(int mode, boolean restricted) {
+        boolean enabled = mLocationEnabler.isEnabled(mode);
+        mPreference.setVisible(enabled);
+    }
+}