Provides TC ID for accessibility framework feature for "about" and "learn more" part
Goal: Improve readability which is a bit difficult because of string concatenation for accurate translation. Root cause: In some locales, framework features name would be a word rather than a product name. Hence it need to be in the different position in a sentence. Solution: Use whole sentence to translate instead of concatenating the string could solve this issue. Bug: 185478543 Test: make RunSettingsRoboTests ROBOTEST_FILTER=AccessibilityFooterPreferenceControllerTest Change-Id: Id198805329be9c773df87f38a074ae956e4d0cdb
This commit is contained in:
@@ -33,8 +33,14 @@ public class AccessibilityButtonFooterPreferenceController extends
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getLabelName() {
|
||||
return mContext.getString(R.string.accessibility_button_title);
|
||||
protected String getLearnMoreContentDescription() {
|
||||
return mContext.getString(
|
||||
R.string.accessibility_button_gesture_footer_learn_more_content_description);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getIntroductionTitle() {
|
||||
return mContext.getString(R.string.accessibility_button_about_title);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -31,8 +31,14 @@ public class AccessibilityControlTimeoutFooterPreferenceController extends
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getLabelName() {
|
||||
return mContext.getString(R.string.accessibility_setting_item_control_timeout_title);
|
||||
protected String getLearnMoreContentDescription() {
|
||||
return mContext.getString(
|
||||
R.string.accessibility_control_timeout_footer_learn_more_content_description);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getIntroductionTitle() {
|
||||
return mContext.getString(R.string.accessibility_control_timeout_about_title);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -21,14 +21,18 @@ import android.content.Intent;
|
||||
|
||||
import androidx.preference.PreferenceScreen;
|
||||
|
||||
import com.android.settings.R;
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
import com.android.settingslib.HelpUtils;
|
||||
|
||||
/**
|
||||
* Base class for accessibility preference footer.
|
||||
* Preference controller that controls the help link and customizes the preference title in {@link
|
||||
* AccessibilityFooterPreference}.
|
||||
*/
|
||||
public abstract class AccessibilityFooterPreferenceController extends BasePreferenceController {
|
||||
public class AccessibilityFooterPreferenceController extends BasePreferenceController {
|
||||
|
||||
private int mHelpResource;
|
||||
private String mLearnMoreContentDescription;
|
||||
private String mIntroductionTitle;
|
||||
|
||||
public AccessibilityFooterPreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
@@ -49,23 +53,55 @@ public abstract class AccessibilityFooterPreferenceController extends BasePrefer
|
||||
}
|
||||
|
||||
/**
|
||||
* Override this if showing a help item in the footer bar, by returning the resource id.
|
||||
* Setups a help item in the {@link AccessibilityFooterPreference} with specific content
|
||||
* description.
|
||||
*/
|
||||
public void setupHelpLink(int helpResource, String learnMoreContentDescription) {
|
||||
mHelpResource = helpResource;
|
||||
mLearnMoreContentDescription = learnMoreContentDescription;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides this if showing a help item in the {@link AccessibilityFooterPreference}, by
|
||||
* returning the resource id.
|
||||
*
|
||||
* @return the resource id for the help url
|
||||
*/
|
||||
protected int getHelpResource() {
|
||||
return 0;
|
||||
return mHelpResource;
|
||||
}
|
||||
|
||||
/** Returns the accessibility feature name. */
|
||||
protected abstract String getLabelName();
|
||||
/**
|
||||
* Overrides this if showing a help item in the {@link AccessibilityFooterPreference} with
|
||||
* specific content description.
|
||||
*
|
||||
* @return the content description for the help url
|
||||
*/
|
||||
protected String getLearnMoreContentDescription() {
|
||||
return mLearnMoreContentDescription;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the announcement the specific features introduction in the {@link
|
||||
* AccessibilityFooterPreference}.
|
||||
*/
|
||||
public void setIntroductionTitle(String introductionTitle) {
|
||||
mIntroductionTitle = introductionTitle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides this if announcement the specific features introduction in the {@link
|
||||
* AccessibilityFooterPreference}.
|
||||
*
|
||||
* @return the extended content description for specific features introduction
|
||||
*/
|
||||
protected String getIntroductionTitle() {
|
||||
return mIntroductionTitle;
|
||||
}
|
||||
|
||||
private void updateFooterPreferences(AccessibilityFooterPreference footerPreference) {
|
||||
final StringBuffer sb = new StringBuffer();
|
||||
sb.append(mContext.getString(
|
||||
R.string.accessibility_introduction_title, getLabelName()))
|
||||
.append("\n\n")
|
||||
.append(footerPreference.getTitle());
|
||||
sb.append(getIntroductionTitle()).append("\n\n").append(footerPreference.getTitle());
|
||||
footerPreference.setContentDescription(sb);
|
||||
|
||||
if (getHelpResource() != 0) {
|
||||
@@ -75,10 +111,10 @@ public abstract class AccessibilityFooterPreferenceController extends BasePrefer
|
||||
mContext.getClass().getName());
|
||||
view.startActivityForResult(helpIntent, 0);
|
||||
});
|
||||
|
||||
final String learnMoreContentDescription = mContext.getString(
|
||||
R.string.footer_learn_more_content_description, getLabelName());
|
||||
footerPreference.setLearnMoreContentDescription(learnMoreContentDescription);
|
||||
footerPreference.setLearnMoreContentDescription(getLearnMoreContentDescription());
|
||||
footerPreference.setLinkEnabled(true);
|
||||
} else {
|
||||
footerPreference.setLinkEnabled(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -30,12 +30,18 @@ public class CaptionFooterPreferenceController extends AccessibilityFooterPrefer
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getLabelName() {
|
||||
return mContext.getString(R.string.accessibility_captioning_title);
|
||||
protected String getLearnMoreContentDescription() {
|
||||
return mContext.getString(
|
||||
R.string.accessibility_captioning_footer_learn_more_content_description);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getHelpResource() {
|
||||
protected String getIntroductionTitle() {
|
||||
return mContext.getString(R.string.accessibility_captioning_about_title);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int getHelpResource() {
|
||||
return R.string.help_url_caption;
|
||||
}
|
||||
}
|
||||
|
@@ -31,8 +31,14 @@ public class ToggleAutoclickFooterPreferenceController extends
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getLabelName() {
|
||||
return mContext.getString(R.string.accessibility_autoclick_preference_title);
|
||||
protected String getLearnMoreContentDescription() {
|
||||
return mContext.getString(
|
||||
R.string.accessibility_autoclick_footer_learn_more_content_description);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String getIntroductionTitle() {
|
||||
return mContext.getString(R.string.accessibility_autoclick_about_title);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -38,8 +38,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/** Settings page for color inversion. */
|
||||
public class ToggleColorInversionPreferenceFragment extends
|
||||
ToggleFeaturePreferenceFragment {
|
||||
public class ToggleColorInversionPreferenceFragment extends ToggleFeaturePreferenceFragment {
|
||||
|
||||
private static final String ENABLED = Settings.Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED;
|
||||
private final Handler mHandler = new Handler();
|
||||
@@ -95,7 +94,20 @@ public class ToggleColorInversionPreferenceFragment extends
|
||||
updateSwitchBarToggleSwitch();
|
||||
}
|
||||
};
|
||||
return super.onCreateView(inflater, container, savedInstanceState);
|
||||
|
||||
final View view = super.onCreateView(inflater, container, savedInstanceState);
|
||||
updateFooterPreference();
|
||||
return view;
|
||||
}
|
||||
|
||||
private void updateFooterPreference() {
|
||||
final String title = getPrefContext().getString(
|
||||
R.string.accessibility_color_inversion_about_title);
|
||||
final String learnMoreContentDescription = getPrefContext().getString(
|
||||
R.string.accessibility_color_inversion_footer_learn_more_content_description);
|
||||
mFooterPreferenceController.setIntroductionTitle(title);
|
||||
mFooterPreferenceController.setupHelpLink(getHelpResource(), learnMoreContentDescription);
|
||||
mFooterPreferenceController.displayPreference(getPreferenceScreen());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -92,12 +92,20 @@ public final class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePrefe
|
||||
updateSwitchBarToggleSwitch();
|
||||
}
|
||||
};
|
||||
return super.onCreateView(inflater, container, savedInstanceState);
|
||||
|
||||
final View view = super.onCreateView(inflater, container, savedInstanceState);
|
||||
updateFooterPreference();
|
||||
return view;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
private void updateFooterPreference() {
|
||||
final String title = getPrefContext()
|
||||
.getString(R.string.accessibility_daltonizer_about_title);
|
||||
final String learnMoreContentDescription = getPrefContext()
|
||||
.getString(R.string.accessibility_daltonizer_footer_learn_more_content_description);
|
||||
mFooterPreferenceController.setIntroductionTitle(title);
|
||||
mFooterPreferenceController.setupHelpLink(getHelpResource(), learnMoreContentDescription);
|
||||
mFooterPreferenceController.displayPreference(getPreferenceScreen());
|
||||
}
|
||||
|
||||
/** Customizes the order by preference key. */
|
||||
|
@@ -57,7 +57,6 @@ import com.android.settings.accessibility.AccessibilityUtil.UserShortcutType;
|
||||
import com.android.settings.utils.LocaleUtils;
|
||||
import com.android.settings.widget.SettingsMainSwitchBar;
|
||||
import com.android.settings.widget.SettingsMainSwitchPreference;
|
||||
import com.android.settingslib.HelpUtils;
|
||||
import com.android.settingslib.accessibility.AccessibilityUtils;
|
||||
import com.android.settingslib.widget.IllustrationPreference;
|
||||
import com.android.settingslib.widget.OnMainSwitchChangeListener;
|
||||
@@ -78,6 +77,7 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
|
||||
protected SettingsMainSwitchPreference mToggleServiceSwitchPreference;
|
||||
protected ShortcutPreference mShortcutPreference;
|
||||
protected Preference mSettingsPreference;
|
||||
protected AccessibilityFooterPreferenceController mFooterPreferenceController;
|
||||
protected String mPreferenceKey;
|
||||
|
||||
protected CharSequence mSettingsTitle;
|
||||
@@ -469,33 +469,19 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
|
||||
final PreferenceScreen screen = getPreferenceScreen();
|
||||
final CharSequence htmlDescription = Html.fromHtml(mHtmlDescription.toString(),
|
||||
Html.FROM_HTML_MODE_COMPACT, mImageGetter, /* tagHandler= */ null);
|
||||
final String iconContentDescription =
|
||||
getString(R.string.accessibility_introduction_title, mPackageName);
|
||||
|
||||
final AccessibilityFooterPreference htmlFooterPreference =
|
||||
new AccessibilityFooterPreference(screen.getContext());
|
||||
htmlFooterPreference.setKey(KEY_HTML_DESCRIPTION_PREFERENCE);
|
||||
htmlFooterPreference.setSummary(htmlDescription);
|
||||
htmlFooterPreference.setContentDescription(
|
||||
generateFooterContentDescription(htmlDescription));
|
||||
|
||||
// Only framework tools support help link
|
||||
if (getHelpResource() != 0) {
|
||||
htmlFooterPreference.setLearnMoreAction(view -> {
|
||||
final Intent helpIntent = HelpUtils.getHelpIntent(
|
||||
getContext(), getContext().getString(getHelpResource()),
|
||||
getContext().getClass().getName());
|
||||
view.startActivityForResult(helpIntent, 0);
|
||||
});
|
||||
|
||||
final String learnMoreContentDescription = getPrefContext().getString(
|
||||
R.string.footer_learn_more_content_description, mPackageName);
|
||||
htmlFooterPreference.setLearnMoreContentDescription(learnMoreContentDescription);
|
||||
htmlFooterPreference.setLinkEnabled(true);
|
||||
} else {
|
||||
htmlFooterPreference.setLinkEnabled(false);
|
||||
}
|
||||
screen.addPreference(htmlFooterPreference);
|
||||
|
||||
// TODO(b/171272809): Migrate to DashboardFragment.
|
||||
final String title = getString(R.string.accessibility_introduction_title, mPackageName);
|
||||
mFooterPreferenceController = new AccessibilityFooterPreferenceController(
|
||||
screen.getContext(), htmlFooterPreference.getKey());
|
||||
mFooterPreferenceController.setIntroductionTitle(title);
|
||||
mFooterPreferenceController.displayPreference(screen);
|
||||
}
|
||||
|
||||
private void initFooterPreference() {
|
||||
@@ -518,41 +504,22 @@ public abstract class ToggleFeaturePreferenceFragment extends SettingsPreference
|
||||
*
|
||||
* @param screen The preference screen to add the footer preference
|
||||
* @param summary The summary of the preference summary.
|
||||
* @param iconContentDescription The content description of icon in the footer.
|
||||
* @param introductionTitle The title of introduction in the footer.
|
||||
*/
|
||||
@VisibleForTesting
|
||||
void createFooterPreference(PreferenceScreen screen, CharSequence summary,
|
||||
String iconContentDescription) {
|
||||
String introductionTitle) {
|
||||
final AccessibilityFooterPreference footerPreference =
|
||||
new AccessibilityFooterPreference(screen.getContext());
|
||||
footerPreference.setSummary(summary);
|
||||
footerPreference.setContentDescription(
|
||||
generateFooterContentDescription(summary));
|
||||
|
||||
// Only framework tools support help link
|
||||
if (getHelpResource() != 0) {
|
||||
footerPreference.setLearnMoreAction(view -> {
|
||||
final Intent helpIntent = HelpUtils.getHelpIntent(
|
||||
getContext(), getContext().getString(getHelpResource()),
|
||||
getContext().getClass().getName());
|
||||
view.startActivityForResult(helpIntent, 0);
|
||||
});
|
||||
|
||||
final String learnMoreContentDescription = getPrefContext().getString(
|
||||
R.string.footer_learn_more_content_description, mPackageName);
|
||||
footerPreference.setLearnMoreContentDescription(learnMoreContentDescription);
|
||||
}
|
||||
screen.addPreference(footerPreference);
|
||||
|
||||
mFooterPreferenceController = new AccessibilityFooterPreferenceController(
|
||||
screen.getContext(), footerPreference.getKey());
|
||||
mFooterPreferenceController.setIntroductionTitle(introductionTitle);
|
||||
mFooterPreferenceController.displayPreference(screen);
|
||||
}
|
||||
|
||||
private CharSequence generateFooterContentDescription(CharSequence footerContent) {
|
||||
final StringBuffer sb = new StringBuffer();
|
||||
sb.append(getPrefContext().getString(
|
||||
R.string.accessibility_introduction_title, mPackageName))
|
||||
.append("\n\n")
|
||||
.append(footerContent);
|
||||
return sb;
|
||||
}
|
||||
@VisibleForTesting
|
||||
void setupEditShortcutDialog(Dialog dialog) {
|
||||
final View dialogSoftwareView = dialog.findViewById(R.id.software_shortcut);
|
||||
|
@@ -86,6 +86,7 @@ public class ToggleReduceBrightColorsPreferenceFragment extends ToggleFeaturePre
|
||||
// Parent sets the title when creating the view, so set it after calling super
|
||||
mToggleServiceSwitchPreference.setTitle(R.string.reduce_bright_colors_switch_title);
|
||||
updateGeneralCategoryOrder();
|
||||
updateFooterPreference();
|
||||
return view;
|
||||
}
|
||||
|
||||
@@ -101,6 +102,12 @@ public class ToggleReduceBrightColorsPreferenceFragment extends ToggleFeaturePre
|
||||
generalCategory.addPreference(persist);
|
||||
}
|
||||
|
||||
private void updateFooterPreference() {
|
||||
final String title = getPrefContext().getString(R.string.reduce_bright_colors_about_title);
|
||||
mFooterPreferenceController.setIntroductionTitle(title);
|
||||
mFooterPreferenceController.displayPreference(getPreferenceScreen());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onViewCreated(View view, Bundle savedInstanceState) {
|
||||
super.onViewCreated(view, savedInstanceState);
|
||||
@@ -135,7 +142,6 @@ public class ToggleReduceBrightColorsPreferenceFragment extends ToggleFeaturePre
|
||||
return R.xml.reduce_bright_colors_settings;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void onPreferenceToggled(String preferenceKey, boolean enabled) {
|
||||
AccessibilityStatsLogUtils.logAccessibilityServiceEnabled(mComponentName, enabled);
|
||||
|
@@ -95,7 +95,20 @@ public class ToggleScreenMagnificationPreferenceFragment extends
|
||||
removeDialog(DialogEnums.EDIT_SHORTCUT);
|
||||
mShortcutPreference.setSummary(getShortcutTypeSummary(getPrefContext()));
|
||||
};
|
||||
return super.onCreateView(inflater, container, savedInstanceState);
|
||||
|
||||
final View view = super.onCreateView(inflater, container, savedInstanceState);
|
||||
updateFooterPreference();
|
||||
return view;
|
||||
}
|
||||
|
||||
private void updateFooterPreference() {
|
||||
final String title = getPrefContext().getString(
|
||||
R.string.accessibility_screen_magnification_about_title);
|
||||
final String learnMoreContentDescription = getPrefContext().getString(
|
||||
R.string.accessibility_screen_magnification_footer_learn_more_content_description);
|
||||
mFooterPreferenceController.setIntroductionTitle(title);
|
||||
mFooterPreferenceController.setupHelpLink(getHelpResource(), learnMoreContentDescription);
|
||||
mFooterPreferenceController.displayPreference(getPreferenceScreen());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
Reference in New Issue
Block a user