From ef9cd2ac9577ff9f2fffdcc2cc9d721390a6661e Mon Sep 17 00:00:00 2001 From: Kevin Chang Date: Thu, 23 May 2019 14:30:23 +0800 Subject: [PATCH] UI change in caption preferences in Settings Move the switch after the caption preview and change the oreder of the settings inside in caption preferences in Accessibility settings. Reference link for screenshot: https://drive.google.com/file/d/1EQLpfQFnJTwU1F8vLAOSHPYqSXKWL_ap/view?usp=sharing Bug: 130755332 Test: Visual Change-Id: Icb4dabdef71be165a21d1bde474872ee0bb35bfa Merged-In: Icb4dabdef71be165a21d1bde474872ee0bb35bfa (cherry picked from commit fd1f1c0f82f046a1f250e96ce221aa29b4984c5a) --- res/xml/captioning_settings.xml | 12 ++- .../CaptionPropertiesFragment.java | 97 +++++++------------ 2 files changed, 45 insertions(+), 64 deletions(-) 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; } }