Merge "Adds 'more details' hyper link." into sc-dev
diff --git a/src/com/android/settings/display/ScreenTimeoutSettings.java b/src/com/android/settings/display/ScreenTimeoutSettings.java
index b518646..b187c87 100644
--- a/src/com/android/settings/display/ScreenTimeoutSettings.java
+++ b/src/com/android/settings/display/ScreenTimeoutSettings.java
@@ -26,8 +26,13 @@
import android.os.Bundle;
import android.os.UserHandle;
import android.provider.Settings;
+import android.text.SpannableString;
+import android.text.Spanned;
+import android.text.style.ClickableSpan;
import android.util.Log;
+import android.view.View;
+import androidx.annotation.NonNull;
import androidx.preference.Preference;
import androidx.preference.PreferenceScreen;
@@ -97,15 +102,6 @@
mPrivacyPreference.setTitle(R.string.adaptive_sleep_privacy);
mPrivacyPreference.setSelectable(false);
mPrivacyPreference.setLayoutResource(R.layout.preference_footer);
-
- mDisableOptionsPreference = new FooterPreference(context);
- mDisableOptionsPreference.setLayoutResource(R.layout.preference_footer);
- mDisableOptionsPreference.setTitle(R.string.admin_disabled_other_options);
- mDisableOptionsPreference.setIcon(R.drawable.ic_info_outline_24dp);
-
- // The 'disabled by admin' preference should always be at the end of the setting page.
- mDisableOptionsPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE);
- mPrivacyPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE - 1);
}
@Override
@@ -138,14 +134,6 @@
final PreferenceScreen screen = getPreferenceScreen();
screen.removeAll();
- if (mAdmin != null) {
- mDisableOptionsPreference.setOnPreferenceClickListener(p -> {
- RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), mAdmin);
- return true;
- });
- screen.addPreference(mDisableOptionsPreference);
- }
-
final List<? extends CandidateInfo> candidateList = getCandidates();
if (candidateList == null) {
return;
@@ -165,14 +153,43 @@
}
if (mAdmin != null) {
- mDisableOptionsPreference.setOnPreferenceClickListener(p -> {
- RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), mAdmin);
- return true;
- });
+ setupDisabledFooterPreference();
screen.addPreference(mDisableOptionsPreference);
}
}
+ @VisibleForTesting
+ void setupDisabledFooterPreference() {
+ final String textDisabledByAdmin = getResources().getString(
+ R.string.admin_disabled_other_options);
+ final String textMoreDetails = getResources().getString(R.string.admin_more_details);
+
+ final SpannableString spannableString = new SpannableString(
+ textDisabledByAdmin + System.lineSeparator() + textMoreDetails);
+ final ClickableSpan clickableSpan = new ClickableSpan() {
+ @Override
+ public void onClick(@NonNull View widget) {
+ RestrictedLockUtils.sendShowAdminSupportDetailsIntent(getContext(), mAdmin);
+ }
+ };
+
+ if (textDisabledByAdmin != null && textMoreDetails != null) {
+ spannableString.setSpan(clickableSpan, textDisabledByAdmin.length() + 1,
+ textDisabledByAdmin.length() + textMoreDetails.length() + 1,
+ Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ }
+
+ mDisableOptionsPreference = new FooterPreference(getContext());
+ mDisableOptionsPreference.setLayoutResource(R.layout.preference_footer);
+ mDisableOptionsPreference.setTitle(spannableString);
+ mDisableOptionsPreference.setSelectable(false);
+ mDisableOptionsPreference.setIcon(R.drawable.ic_info_outline_24dp);
+
+ // The 'disabled by admin' preference should always be at the end of the setting page.
+ mDisableOptionsPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE);
+ mPrivacyPreference.setOrder(DEFAULT_ORDER_OF_LOWEST_PREFERENCE - 1);
+ }
+
@Override
protected String getDefaultKey() {
return getCurrentSystemScreenTimeout(getContext());
diff --git a/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java b/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
index efc45e0..f0bf95c 100644
--- a/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
+++ b/tests/robotests/src/com/android/settings/display/ScreenTimeoutSettingsTest.java
@@ -23,6 +23,7 @@
import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Mockito.atLeast;
+import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.spy;
@@ -138,6 +139,7 @@
public void updateCandidates_enforcedAdmin_showDisabledByAdminPreference() {
mSettings.mAdmin = new RestrictedLockUtils.EnforcedAdmin();
mSettings.mDisableOptionsPreference = mDisableOptionsPreference;
+ doNothing().when(mSettings).setupDisabledFooterPreference();
mSettings.updateCandidates();