Remove extra fragment in captioning preferences

BUG: 11813771
Change-Id: Ied0b268aca93d7081cdcee1ea9db6347a762e3ac
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 412ca43..21999c0 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -61,8 +61,8 @@
 
 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 @@
         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 b010ca8..07c4d84 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.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 @@
         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 @@
         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 c091f71..84aba6c 100644
--- a/src/com/android/settings/accessibility/PresetPreference.java
+++ b/src/com/android/settings/accessibility/PresetPreference.java
@@ -51,7 +51,7 @@
     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 f3c8b1c..0000000
--- 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;
-            }
-        });
-    }
-}