diff --git a/AndroidManifest.xml b/AndroidManifest.xml index ce257418fc5..92dfbe51aac 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1974,7 +1974,7 @@ + android:resource="@string/accessibility_text_reading_options_suggestion_title" /> diff --git a/res/values/strings.xml b/res/values/strings.xml index 82bccee92b7..36e1193e3ed 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -5229,7 +5229,9 @@ About %1$s - Text and reading options + Display size and text + + Change how text displays Email: Plans for time machine, v2 diff --git a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java index 5fc4cd21797..2cdbb332e0f 100644 --- a/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java +++ b/src/com/android/settings/accessibility/AccessibilityDetailsSettingsFragment.java @@ -234,6 +234,9 @@ public class AccessibilityDetailsSettingsFragment extends InstrumentedFragment { final String htmlDescription = info.loadHtmlDescription(getActivity().getPackageManager()); extras.putString(AccessibilitySettings.EXTRA_HTML_DESCRIPTION, htmlDescription); + final CharSequence intro = info.loadIntro(getActivity().getPackageManager()); + extras.putCharSequence(AccessibilitySettings.EXTRA_INTRO, intro); + // We will log nonA11yTool status from PolicyWarningUIController; others none. extras.putLong(AccessibilitySettings.EXTRA_TIME_FOR_LOGGING, getActivity().getIntent().getLongExtra( diff --git a/src/com/android/settings/accessibility/AccessibilitySettings.java b/src/com/android/settings/accessibility/AccessibilitySettings.java index e834640e678..6539f326734 100644 --- a/src/com/android/settings/accessibility/AccessibilitySettings.java +++ b/src/com/android/settings/accessibility/AccessibilitySettings.java @@ -94,6 +94,7 @@ public class AccessibilitySettings extends DashboardFragment { static final String EXTRA_TITLE_RES = "title_res"; static final String EXTRA_RESOLVE_INFO = "resolve_info"; static final String EXTRA_SUMMARY = "summary"; + static final String EXTRA_INTRO = "intro"; static final String EXTRA_SETTINGS_TITLE = "settings_title"; static final String EXTRA_COMPONENT_NAME = "component_name"; static final String EXTRA_SETTINGS_COMPONENT_NAME = "settings_component_name"; @@ -570,14 +571,15 @@ public class AccessibilitySettings extends DashboardFragment { final String prefKey = preference.getKey(); final int imageRes = info.getAnimatedImageRes(); + final CharSequence intro = info.loadIntro(mPm); final CharSequence description = getServiceDescription(mContext, info, serviceEnabled); final String htmlDescription = info.loadHtmlDescription(mPm); final String settingsClassName = info.getSettingsActivityName(); final String tileServiceClassName = info.getTileServiceClassName(); - putBasicExtras(preference, prefKey, title, description, imageRes, htmlDescription, - componentName); + putBasicExtras(preference, prefKey, title, intro, description, imageRes, + htmlDescription, componentName); putServiceExtras(preference, resolveInfo, serviceEnabled); putSettingsExtras(preference, packageName, settingsClassName); putTileServiceExtras(preference, packageName, tileServiceClassName); @@ -630,14 +632,15 @@ public class AccessibilitySettings extends DashboardFragment { setRestrictedPreferenceEnabled(preference, permittedServices, serviceEnabled); final String prefKey = preference.getKey(); + final CharSequence intro = info.loadIntro(mPm); final String description = info.loadDescription(mPm); final int imageRes = info.getAnimatedImageRes(); final String htmlDescription = info.loadHtmlDescription(mPm); final String settingsClassName = info.getSettingsActivityName(); final String tileServiceClassName = info.getTileServiceClassName(); - putBasicExtras(preference, prefKey, title, description, imageRes, htmlDescription, - componentName); + putBasicExtras(preference, prefKey, title, intro, description, imageRes, + htmlDescription, componentName); putSettingsExtras(preference, componentName.getPackageName(), settingsClassName); putTileServiceExtras(preference, componentName.getPackageName(), tileServiceClassName); @@ -722,11 +725,12 @@ public class AccessibilitySettings extends DashboardFragment { /** Puts the basic extras into {@link RestrictedPreference}'s getExtras(). */ private void putBasicExtras(RestrictedPreference preference, String prefKey, - CharSequence title, CharSequence summary, int imageRes, String htmlDescription, - ComponentName componentName) { + CharSequence title, CharSequence intro, CharSequence summary, int imageRes, + String htmlDescription, ComponentName componentName) { final Bundle extras = preference.getExtras(); extras.putString(EXTRA_PREFERENCE_KEY, prefKey); extras.putCharSequence(EXTRA_TITLE, title); + extras.putCharSequence(EXTRA_INTRO, intro); extras.putCharSequence(EXTRA_SUMMARY, summary); extras.putParcelable(EXTRA_COMPONENT_NAME, componentName); extras.putInt(EXTRA_ANIMATED_IMAGE_RES, imageRes); diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index 08e9b88878a..5747d0a1101 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -63,6 +63,7 @@ import com.android.settings.widget.SettingsMainSwitchPreference; import com.android.settingslib.accessibility.AccessibilityUtils; import com.android.settingslib.widget.IllustrationPreference; import com.android.settingslib.widget.OnMainSwitchChangeListener; +import com.android.settingslib.widget.TopIntroPreference; import com.google.android.setupcompat.util.WizardManagerHelper; @@ -92,8 +93,10 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference protected Uri mImageUri; private CharSequence mDescription; protected CharSequence mHtmlDescription; + protected CharSequence mTopIntroTitle; private static final String DRAWABLE_FOLDER = "drawable"; + protected static final String KEY_TOP_INTRO_PREFERENCE = "top_intro"; protected static final String KEY_USE_SERVICE_PREFERENCE = "use_service"; public static final String KEY_GENERAL_CATEGORY = "general_categories"; protected static final String KEY_HTML_DESCRIPTION_PREFERENCE = "html_description"; @@ -182,6 +185,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference // Need to be called as early as possible. Protected variables will be assigned here. onProcessArguments(getArguments()); + initTopIntroPreference(); initAnimatedImagePreference(); initToggleServiceSwitchPreference(); initGeneralCategory(); @@ -388,11 +392,17 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference mHtmlDescription = arguments.getCharSequence( AccessibilitySettings.EXTRA_HTML_DESCRIPTION); } + + // Intro. + if (arguments.containsKey(AccessibilitySettings.EXTRA_INTRO)) { + mTopIntroTitle = arguments.getCharSequence(AccessibilitySettings.EXTRA_INTRO); + } } /** Customizes the order by preference key. */ protected List getPreferenceOrderList() { final List lists = new ArrayList<>(); + lists.add(KEY_TOP_INTRO_PREFERENCE); lists.add(KEY_ANIMATED_IMAGE); lists.add(KEY_USE_SERVICE_PREFERENCE); lists.add(KEY_GENERAL_CATEGORY); @@ -461,6 +471,17 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference getPreferenceScreen().addPreference(illustrationPreference); } + @VisibleForTesting + void initTopIntroPreference() { + if (TextUtils.isEmpty(mTopIntroTitle)) { + return; + } + final TopIntroPreference topIntroPreference = new TopIntroPreference(getPrefContext()); + topIntroPreference.setKey(KEY_TOP_INTRO_PREFERENCE); + topIntroPreference.setTitle(mTopIntroTitle); + getPreferenceScreen().addPreference(topIntroPreference); + } + private void initToggleServiceSwitchPreference() { mToggleServiceSwitchPreference = new SettingsMainSwitchPreference(getPrefContext()); mToggleServiceSwitchPreference.setKey(KEY_USE_SERVICE_PREFERENCE); diff --git a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java index 5ea4edc8a8d..34a2f5b3eba 100644 --- a/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java +++ b/tests/robotests/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragmentTest.java @@ -51,6 +51,7 @@ import com.android.settings.R; import com.android.settings.accessibility.AccessibilityDialogUtils.DialogType; import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType; import com.android.settings.testutils.shadow.ShadowFragment; +import com.android.settingslib.widget.TopIntroPreference; import org.junit.Before; import org.junit.Test; @@ -81,6 +82,7 @@ public class ToggleFeaturePreferenceFragmentTest { private static final String PLACEHOLDER_DIALOG_TITLE = "title"; private static final String DEFAULT_SUMMARY = "default summary"; private static final String DEFAULT_DESCRIPTION = "default description"; + private static final String DEFAULT_TOP_INTRO = "default top intro"; private static final String SOFTWARE_SHORTCUT_KEY = Settings.Secure.ACCESSIBILITY_BUTTON_TARGETS; @@ -293,6 +295,23 @@ public class ToggleFeaturePreferenceFragmentTest { assertThat(getLatestPopupWindow().isShowing()).isTrue(); } + @Test + public void initTopIntroPreference_hasTopIntroTitle_shouldSetAsExpectedValue() { + mFragment.mTopIntroTitle = DEFAULT_TOP_INTRO; + mFragment.initTopIntroPreference(); + + TopIntroPreference topIntroPreference = + (TopIntroPreference) mFragment.getPreferenceScreen().getPreference(/* index= */ 0); + assertThat(topIntroPreference.getTitle().toString()).isEqualTo(DEFAULT_TOP_INTRO); + } + + @Test + public void initTopIntroPreference_topIntroTitleIsNull_shouldNotAdded() { + mFragment.initTopIntroPreference(); + + assertThat(mFragment.getPreferenceScreen().getPreferenceCount()).isEqualTo(0); + } + @Test public void createFooterPreference_shouldSetAsExpectedValue() { mFragment.createFooterPreference(mFragment.getPreferenceScreen(),