From 4098dba2535453a89ba74022de47578f2556bd41 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Wed, 4 Dec 2013 17:19:24 -0800 Subject: [PATCH] Remove extra fragment in captioning preferences BUG: 11813771 Change-Id: Ied0b268aca93d7081cdcee1ea9db6347a762e3ac --- AndroidManifest.xml | 2 +- res/layout/captioning_preview.xml | 3 +- res/xml/accessibility_settings.xml | 2 +- res/xml/captioning_settings.xml | 2 +- src/com/android/settings/Settings.java | 4 +- .../accessibility/CaptionPropertiesFragment.java | 130 ++++++++++++++++-- .../settings/accessibility/PresetPreference.java | 2 +- .../ToggleCaptioningPreferenceFragment.java | 152 --------------------- 8 files changed, 123 insertions(+), 174 deletions(-) delete mode 100644 src/com/android/settings/accessibility/ToggleCaptioningPreferenceFragment.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 567400bdf9..1161cd65a2 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -1059,7 +1059,7 @@ + android:value="com.android.settings.accessibility.CaptionPropertiesFragment" /> diff --git a/res/layout/captioning_preview.xml b/res/layout/captioning_preview.xml index 00d94a0d8b..44563e4385 100644 --- a/res/layout/captioning_preview.xml +++ b/res/layout/captioning_preview.xml @@ -40,9 +40,8 @@ android:text="@string/captioning_preview_text" /> - diff --git a/res/xml/accessibility_settings.xml b/res/xml/accessibility_settings.xml index 49f2e56a8e..666921ad2e 100644 --- a/res/xml/accessibility_settings.xml +++ b/res/xml/accessibility_settings.xml @@ -28,7 +28,7 @@ android:title="@string/accessibility_system_title"> diff --git a/res/xml/captioning_settings.xml b/res/xml/captioning_settings.xml index 9773943079..02fe51f301 100644 --- a/res/xml/captioning_settings.xml +++ b/res/xml/captioning_settings.xml @@ -17,7 +17,7 @@ diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java index 412ca43db5..21999c05df 100644 --- a/src/com/android/settings/Settings.java +++ b/src/com/android/settings/Settings.java @@ -61,8 +61,8 @@ import android.widget.TextView; import com.android.internal.util.ArrayUtils; import com.android.settings.accessibility.AccessibilitySettings; +import com.android.settings.accessibility.CaptionPropertiesFragment; import com.android.settings.accessibility.ToggleAccessibilityServicePreferenceFragment; -import com.android.settings.accessibility.ToggleCaptioningPreferenceFragment; import com.android.settings.accounts.AccountSyncSettings; import com.android.settings.accounts.AuthenticatorHelper; import com.android.settings.accounts.ManageAccountsSettings; @@ -332,7 +332,7 @@ public class Settings extends PreferenceActivity PrivacySettings.class.getName(), DeviceAdminSettings.class.getName(), AccessibilitySettings.class.getName(), - ToggleCaptioningPreferenceFragment.class.getName(), + CaptionPropertiesFragment.class.getName(), com.android.settings.accessibility.ToggleInversionPreferenceFragment.class.getName(), com.android.settings.accessibility.ToggleContrastPreferenceFragment.class.getName(), com.android.settings.accessibility.ToggleDaltonizerPreferenceFragment.class.getName(), diff --git a/src/com/android/settings/accessibility/CaptionPropertiesFragment.java b/src/com/android/settings/accessibility/CaptionPropertiesFragment.java index b010ca8c8c..07c4d84c93 100644 --- a/src/com/android/settings/accessibility/CaptionPropertiesFragment.java +++ b/src/com/android/settings/accessibility/CaptionPropertiesFragment.java @@ -16,6 +16,8 @@ package com.android.settings.accessibility; +import android.app.ActionBar; +import android.app.Activity; import android.content.ContentResolver; import android.content.Context; import android.content.res.Resources; @@ -24,22 +26,34 @@ import android.os.Bundle; import android.preference.ListPreference; import android.preference.Preference; import android.preference.PreferenceCategory; +import android.preference.PreferenceFrameLayout; import android.preference.Preference.OnPreferenceChangeListener; import android.provider.Settings; +import android.view.Gravity; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.view.ViewGroup.LayoutParams; import android.view.accessibility.CaptioningManager; import android.view.accessibility.CaptioningManager.CaptionStyle; +import com.android.internal.widget.SubtitleView; import com.android.settings.R; import com.android.settings.SettingsPreferenceFragment; import com.android.settings.accessibility.ListDialogPreference.OnValueChangedListener; +import com.android.settings.accessibility.ToggleSwitch.OnBeforeCheckedChangeListener; + +import java.util.Locale; /** * Settings fragment containing captioning properties. */ public class CaptionPropertiesFragment extends SettingsPreferenceFragment implements OnPreferenceChangeListener, OnValueChangedListener { - private ToggleCaptioningPreferenceFragment mParent; + private static final float DEFAULT_FONT_SIZE = 48f; + private CaptioningManager mCaptioningManager; + private SubtitleView mPreviewText; // Standard options. private LocalePreference mLocale; @@ -70,13 +84,107 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment installUpdateListeners(); } - /** - * Sets the parent fragment, which is used to update the live preview. - * - * @param parent the parent fragment - */ - public void setParent(ToggleCaptioningPreferenceFragment parent) { - mParent = parent; + @Override + public View onCreateView( + LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + final View rootView = inflater.inflate(R.layout.captioning_preview, container, false); + + // We have to do this now because PreferenceFrameLayout looks at it + // only when the view is added. + if (container instanceof PreferenceFrameLayout) { + ((PreferenceFrameLayout.LayoutParams) rootView.getLayoutParams()).removeBorders = true; + } + + final View content = super.onCreateView(inflater, container, savedInstanceState); + ((ViewGroup) rootView.findViewById(R.id.properties_fragment)).addView( + content, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); + + return rootView; + } + + @Override + public void onViewCreated(View view, Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + + mPreviewText = (SubtitleView) view.findViewById(R.id.preview_text); + + installActionBarToggleSwitch(); + refreshPreviewText(); + } + + private void refreshPreviewText() { + final Context context = getActivity(); + if (context == null) { + // We've been destroyed, abort! + return; + } + + final SubtitleView preview = mPreviewText; + if (preview != null) { + final int styleId = mCaptioningManager.getRawUserStyle(); + applyCaptionProperties(mCaptioningManager, preview, styleId); + + final Locale locale = mCaptioningManager.getLocale(); + if (locale != null) { + final CharSequence localizedText = AccessibilityUtils.getTextForLocale( + context, locale, R.string.captioning_preview_text); + preview.setText(localizedText); + } else { + preview.setText(R.string.captioning_preview_text); + } + } + } + + public static void applyCaptionProperties( + CaptioningManager manager, SubtitleView previewText, int styleId) { + previewText.setStyle(styleId); + + final Context context = previewText.getContext(); + final ContentResolver cr = context.getContentResolver(); + final float fontScale = manager.getFontScale(); + previewText.setTextSize(fontScale * DEFAULT_FONT_SIZE); + + final Locale locale = manager.getLocale(); + if (locale != null) { + final CharSequence localizedText = AccessibilityUtils.getTextForLocale( + context, locale, R.string.captioning_preview_characters); + previewText.setText(localizedText); + } else { + previewText.setText(R.string.captioning_preview_characters); + } + } + + private void installActionBarToggleSwitch() { + final Activity activity = getActivity(); + final ToggleSwitch toggleSwitch = new ToggleSwitch(activity); + + final int padding = getResources().getDimensionPixelSize( + R.dimen.action_bar_switch_padding); + toggleSwitch.setPaddingRelative(0, 0, padding, 0); + + final ActionBar actionBar = activity.getActionBar(); + actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM); + + final ActionBar.LayoutParams params = new ActionBar.LayoutParams( + ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT, + Gravity.CENTER_VERTICAL | Gravity.END); + actionBar.setCustomView(toggleSwitch, params); + + final boolean enabled = mCaptioningManager.isEnabled(); + getPreferenceScreen().setEnabled(enabled); + mPreviewText.setVisibility(enabled ? View.VISIBLE : View.INVISIBLE); + toggleSwitch.setCheckedInternal(enabled); + toggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { + @Override + public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { + toggleSwitch.setCheckedInternal(checked); + Settings.Secure.putInt(getActivity().getContentResolver(), + Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, checked ? 1 : 0); + getPreferenceScreen().setEnabled(checked); + mPreviewText.setVisibility(checked ? View.VISIBLE : View.INVISIBLE); + return false; + } + }); } private void initializeAllPreferences() { @@ -171,12 +279,6 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment mLocale.setValue(rawLocale == null ? "" : rawLocale); } - private void refreshPreviewText() { - if (mParent != null) { - mParent.refreshPreviewText(); - } - } - private void refreshShowingCustom() { final boolean customPreset = mPreset.getValue() == CaptionStyle.PRESET_CUSTOM; if (!customPreset && mShowingCustom) { diff --git a/src/com/android/settings/accessibility/PresetPreference.java b/src/com/android/settings/accessibility/PresetPreference.java index c091f712ca..84aba6c7e1 100644 --- a/src/com/android/settings/accessibility/PresetPreference.java +++ b/src/com/android/settings/accessibility/PresetPreference.java @@ -51,7 +51,7 @@ public class PresetPreference extends ListDialogPreference { protected void onBindListItem(View view, int index) { final SubtitleView previewText = (SubtitleView) view.findViewById(R.id.preview); final int value = getValueAt(index); - ToggleCaptioningPreferenceFragment.applyCaptionProperties( + CaptionPropertiesFragment.applyCaptionProperties( mCaptioningManager, previewText, value); previewText.setTextSize(DEFAULT_FONT_SIZE); diff --git a/src/com/android/settings/accessibility/ToggleCaptioningPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleCaptioningPreferenceFragment.java deleted file mode 100644 index f3c8b1ce93..0000000000 --- a/src/com/android/settings/accessibility/ToggleCaptioningPreferenceFragment.java +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (C) 2013 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.accessibility; - -import android.app.ActionBar; -import android.app.Activity; -import android.app.Fragment; -import android.content.ContentResolver; -import android.content.Context; -import android.os.Bundle; -import android.preference.PreferenceFrameLayout; -import android.provider.Settings; -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.view.accessibility.CaptioningManager; - -import com.android.internal.widget.SubtitleView; -import com.android.settings.R; -import com.android.settings.accessibility.ToggleSwitch.OnBeforeCheckedChangeListener; - -import java.util.Locale; - -public class ToggleCaptioningPreferenceFragment extends Fragment { - private static final float DEFAULT_FONT_SIZE = 48f; - - private CaptionPropertiesFragment mPropsFragment; - private SubtitleView mPreviewText; - private CaptioningManager mCaptioningManager; - - @Override - public void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - mCaptioningManager = (CaptioningManager) getActivity() - .getSystemService(Context.CAPTIONING_SERVICE); - } - - @Override - public View onCreateView( - LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { - final View rootView = inflater.inflate(R.layout.captioning_preview, container, false); - - // We have to do this now because PreferenceFrameLayout looks at it - // only when the view is added. - if (container instanceof PreferenceFrameLayout) { - ((PreferenceFrameLayout.LayoutParams) rootView.getLayoutParams()).removeBorders = true; - } - - return rootView; - } - - @Override - public void onViewCreated(View view, Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - - mPropsFragment = ((CaptionPropertiesFragment) getFragmentManager() - .findFragmentById(R.id.properties_fragment)); - mPropsFragment.setParent(this); - - mPreviewText = (SubtitleView) view.findViewById(R.id.preview_text); - - installActionBarToggleSwitch(); - refreshPreviewText(); - } - - public void refreshPreviewText() { - final SubtitleView preview = mPreviewText; - if (preview != null) { - final Activity activity = getActivity(); - final ContentResolver cr = activity.getContentResolver(); - final int styleId = mCaptioningManager.getRawUserStyle(); - applyCaptionProperties(mCaptioningManager, preview, styleId); - - final Locale locale = mCaptioningManager.getLocale(); - if (locale != null) { - final CharSequence localizedText = AccessibilityUtils.getTextForLocale( - activity, locale, R.string.captioning_preview_text); - preview.setText(localizedText); - } else { - preview.setText(R.string.captioning_preview_text); - } - } - } - - public static void applyCaptionProperties( - CaptioningManager manager, SubtitleView previewText, int styleId) { - previewText.setStyle(styleId); - - final Context context = previewText.getContext(); - final ContentResolver cr = context.getContentResolver(); - final float fontScale = manager.getFontScale(); - previewText.setTextSize(fontScale * DEFAULT_FONT_SIZE); - - final Locale locale = manager.getLocale(); - if (locale != null) { - final CharSequence localizedText = AccessibilityUtils.getTextForLocale( - context, locale, R.string.captioning_preview_characters); - previewText.setText(localizedText); - } else { - previewText.setText(R.string.captioning_preview_characters); - } - } - - private void installActionBarToggleSwitch() { - final Activity activity = getActivity(); - final ToggleSwitch toggleSwitch = new ToggleSwitch(activity); - - final int padding = getResources().getDimensionPixelSize( - R.dimen.action_bar_switch_padding); - toggleSwitch.setPaddingRelative(0, 0, padding, 0); - - final ActionBar actionBar = activity.getActionBar(); - actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM, ActionBar.DISPLAY_SHOW_CUSTOM); - - final ActionBar.LayoutParams params = new ActionBar.LayoutParams( - ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT, - Gravity.CENTER_VERTICAL | Gravity.END); - actionBar.setCustomView(toggleSwitch, params); - - final boolean enabled = mCaptioningManager.isEnabled(); - mPropsFragment.getPreferenceScreen().setEnabled(enabled); - mPreviewText.setVisibility(enabled ? View.VISIBLE : View.INVISIBLE); - toggleSwitch.setCheckedInternal(enabled); - toggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { - @Override - public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { - toggleSwitch.setCheckedInternal(checked); - Settings.Secure.putInt(getActivity().getContentResolver(), - Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, checked ? 1 : 0); - mPropsFragment.getPreferenceScreen().setEnabled(checked); - mPreviewText.setVisibility(checked ? View.VISIBLE : View.INVISIBLE); - return false; - } - }); - } -} -- 2.11.0