diff --git a/res/xml/captioning_settings.xml b/res/xml/captioning_settings.xml
index 56e0e2d3d76..715a50694b9 100644
--- a/res/xml/captioning_settings.xml
+++ b/res/xml/captioning_settings.xml
@@ -30,10 +30,9 @@
-
+
+
+
mPreferenceList = new ArrayList<>();
+
@Override
public int getMetricsCategory() {
return SettingsEnums.ACCESSIBILITY_CAPTION_PROPERTIES;
@@ -110,31 +111,18 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
updateAllPreferences();
refreshShowingCustom();
installUpdateListeners();
- }
-
- @Override
- public void onActivityCreated(Bundle savedInstanceState) {
- super.onActivityCreated(savedInstanceState);
-
- final boolean enabled = mCaptioningManager.isEnabled();
- SettingsActivity activity = (SettingsActivity) getActivity();
- mSwitchBar = activity.getSwitchBar();
- mSwitchBar.setSwitchBarText(R.string.accessibility_caption_master_switch_title,
- R.string.accessibility_caption_master_switch_title);
- mSwitchBar.setCheckedInternal(enabled);
- mToggleSwitch = mSwitchBar.getSwitch();
-
- getPreferenceScreen().setEnabled(enabled);
-
refreshPreviewText();
-
- installSwitchBarToggleSwitch();
}
- @Override
- public void onDestroyView() {
- super.onDestroyView();
- removeSwitchBarToggleSwitch();
+ private void setPreferenceViewEnabled(boolean enabled) {
+ for (Preference preference : mPreferenceList) {
+ preference.setEnabled(enabled);
+ }
+ }
+
+ private void refreshPreferenceViewEnabled(boolean enabled) {
+ setPreferenceViewEnabled(enabled);
+ mPreviewText.setVisibility(enabled ? View.VISIBLE : View.INVISIBLE);
}
private void refreshPreviewText() {
@@ -196,38 +184,10 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
}
}
- protected void onInstallSwitchBarToggleSwitch() {
- mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
- @Override
- public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
- mSwitchBar.setCheckedInternal(checked);
- Settings.Secure.putInt(getActivity().getContentResolver(),
- Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, checked ? 1 : 0);
- getPreferenceScreen().setEnabled(checked);
- if (mPreviewText != null) {
- mPreviewText.setVisibility(checked ? View.VISIBLE : View.INVISIBLE);
- }
- return false;
- }
- });
- }
-
- private void installSwitchBarToggleSwitch() {
- onInstallSwitchBarToggleSwitch();
- mSwitchBar.show();
- }
-
- private void removeSwitchBarToggleSwitch() {
- mSwitchBar.hide();
- mToggleSwitch.setOnBeforeCheckedChangeListener(null);
- }
-
private void initializeAllPreferences() {
final LayoutPreference captionPreview = findPreference(PREF_CAPTION_PREVIEW);
- final boolean enabled = mCaptioningManager.isEnabled();
mPreviewText = captionPreview.findViewById(R.id.preview_text);
- mPreviewText.setVisibility(enabled ? View.VISIBLE : View.INVISIBLE);
mPreviewWindow = captionPreview.findViewById(R.id.preview_window);
@@ -236,9 +196,6 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
(v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom)
-> refreshPreviewText());
- mLocale = (LocalePreference) findPreference(PREF_LOCALE);
- mFontSize = (ListPreference) findPreference(PREF_FONT_SIZE);
-
final Resources res = getResources();
final int[] presetValues = res.getIntArray(R.array.captioning_preset_selector_values);
final String[] presetTitles = res.getStringArray(R.array.captioning_preset_selector_titles);
@@ -246,6 +203,17 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
mPreset.setValues(presetValues);
mPreset.setTitles(presetTitles);
+ mSwitch = (SwitchPreference) findPreference(PREF_SWITCH);
+ mLocale = (LocalePreference) findPreference(PREF_LOCALE);
+ mFontSize = (ListPreference) findPreference(PREF_FONT_SIZE);
+
+ // Initialize the preference list
+ mPreferenceList.add(mLocale);
+ mPreferenceList.add(mFontSize);
+ mPreferenceList.add(mPreset);
+
+ refreshPreferenceViewEnabled(mCaptioningManager.isEnabled());
+
mCustom = (PreferenceCategory) findPreference(PREF_CUSTOM);
mShowingCustom = true;
@@ -304,6 +272,7 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
mWindowOpacity.setOnValueChangedListener(this);
mEdgeType.setOnValueChangedListener(this);
+ mSwitch.setOnPreferenceChangeListener(this);
mTypeface.setOnPreferenceChangeListener(this);
mFontSize.setOnPreferenceChangeListener(this);
mLocale.setOnPreferenceChangeListener(this);
@@ -338,6 +307,8 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
final String rawLocale = mCaptioningManager.getRawLocale();
mLocale.setValue(rawLocale == null ? "" : rawLocale);
+
+ mSwitch.setChecked(mCaptioningManager.isEnabled());
}
/**
@@ -431,16 +402,22 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
if (mTypeface == preference) {
Settings.Secure.putString(
cr, Settings.Secure.ACCESSIBILITY_CAPTIONING_TYPEFACE, (String) value);
+ refreshPreviewText();
} else if (mFontSize == preference) {
Settings.Secure.putFloat(
cr, Settings.Secure.ACCESSIBILITY_CAPTIONING_FONT_SCALE,
Float.parseFloat((String) value));
+ refreshPreviewText();
} else if (mLocale == preference) {
Settings.Secure.putString(
cr, Settings.Secure.ACCESSIBILITY_CAPTIONING_LOCALE, (String) value);
+ refreshPreviewText();
+ } else if (mSwitch == preference) {
+ Settings.Secure.putInt(
+ cr, Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, (boolean) value ? 1 : 0);
+ refreshPreferenceViewEnabled((boolean) value);
}
- refreshPreviewText();
return true;
}
}