From 006b2cca1311e61472a8b66fb0c50854fc36d2e7 Mon Sep 17 00:00:00 2001 From: Fabrice Di Meglio Date: Fri, 27 Jun 2014 19:13:19 -0700 Subject: [PATCH] Fix bug #15897505 Talk back state shows "off" while the talk back is still enabled. - we were missing the update of the TextView from the SwitchBar so provide a new setCheckedInternal() method that is doing the TextView and Switch update at the same time Change-Id: I6dd9c472a386bb534a58fbf5cf82d9d01fa74f6c --- .../accessibility/CaptionPropertiesFragment.java | 5 ++--- ...ToggleAccessibilityServicePreferenceFragment.java | 10 +++++----- .../ToggleDaltonizerPreferenceFragment.java | 2 +- .../ToggleFeaturePreferenceFragment.java | 2 +- .../ToggleGlobalGesturePreferenceFragment.java | 2 +- .../ToggleInversionPreferenceFragment.java | 2 +- .../ToggleScreenMagnificationPreferenceFragment.java | 2 +- .../settings/print/PrintServiceSettingsFragment.java | 12 ++++++------ src/com/android/settings/widget/SwitchBar.java | 5 +++++ 9 files changed, 23 insertions(+), 19 deletions(-) diff --git a/src/com/android/settings/accessibility/CaptionPropertiesFragment.java b/src/com/android/settings/accessibility/CaptionPropertiesFragment.java index 53d614d38f7..fa664bbbd3a 100644 --- a/src/com/android/settings/accessibility/CaptionPropertiesFragment.java +++ b/src/com/android/settings/accessibility/CaptionPropertiesFragment.java @@ -151,9 +151,8 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment final boolean enabled = mCaptioningManager.isEnabled(); SettingsActivity activity = (SettingsActivity) getActivity(); mSwitchBar = activity.getSwitchBar(); - mSwitchBar.setTextViewLabel(enabled); + mSwitchBar.setCheckedInternal(enabled); mToggleSwitch = mSwitchBar.getSwitch(); - mToggleSwitch.setCheckedInternal(enabled); getPreferenceScreen().setEnabled(enabled); @@ -228,7 +227,7 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { @Override public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { - toggleSwitch.setCheckedInternal(checked); + mSwitchBar.setCheckedInternal(checked); Settings.Secure.putInt(getActivity().getContentResolver(), Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, checked ? 1 : 0); getPreferenceScreen().setEnabled(checked); diff --git a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java index cb7699e42cd..f4b85f324de 100644 --- a/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java @@ -58,7 +58,7 @@ public class ToggleAccessibilityServicePreferenceFragment String settingValue = Settings.Secure.getString(getContentResolver(), Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES); final boolean enabled = settingValue.contains(mComponentName.flattenToString()); - mToggleSwitch.setCheckedInternal(enabled); + mSwitchBar.setCheckedInternal(enabled); } }; @@ -263,13 +263,13 @@ public class ToggleAccessibilityServicePreferenceFragment switch (which) { case DialogInterface.BUTTON_POSITIVE: checked = (mShownDialogId == DIALOG_ID_ENABLE_WARNING); - mToggleSwitch.setCheckedInternal(checked); + mSwitchBar.setCheckedInternal(checked); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked); onPreferenceToggled(mPreferenceKey, checked); break; case DialogInterface.BUTTON_NEGATIVE: checked = (mShownDialogId == DIALOG_ID_DISABLE_WARNING); - mToggleSwitch.setCheckedInternal(checked); + mSwitchBar.setCheckedInternal(checked); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked); onPreferenceToggled(mPreferenceKey, checked); break; @@ -285,11 +285,11 @@ public class ToggleAccessibilityServicePreferenceFragment @Override public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { if (checked) { - toggleSwitch.setCheckedInternal(false); + mSwitchBar.setCheckedInternal(false); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, false); showDialog(DIALOG_ID_ENABLE_WARNING); } else { - toggleSwitch.setCheckedInternal(true); + mSwitchBar.setCheckedInternal(true); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, true); showDialog(DIALOG_ID_DISABLE_WARNING); } diff --git a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java index 54a34f2561f..1f7ecf7e4db 100644 --- a/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java @@ -72,7 +72,7 @@ public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceF protected void onInstallSwitchBarToggleSwitch() { super.onInstallSwitchBarToggleSwitch(); - mToggleSwitch.setCheckedInternal( + mSwitchBar.setCheckedInternal( Settings.Secure.getInt(getContentResolver(), ENABLED, 0) == 1); mSwitchBar.addOnSwitchChangeListener(this); } diff --git a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java index bc2175945b6..9fe70df00f1 100644 --- a/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java @@ -153,7 +153,7 @@ public abstract class ToggleFeaturePreferenceFragment // Enabled. if (arguments.containsKey(AccessibilitySettings.EXTRA_CHECKED)) { final boolean enabled = arguments.getBoolean(AccessibilitySettings.EXTRA_CHECKED); - mToggleSwitch.setCheckedInternal(enabled); + mSwitchBar.setCheckedInternal(enabled); } // Title. diff --git a/src/com/android/settings/accessibility/ToggleGlobalGesturePreferenceFragment.java b/src/com/android/settings/accessibility/ToggleGlobalGesturePreferenceFragment.java index 782e7a5b294..7fb1625e0a6 100644 --- a/src/com/android/settings/accessibility/ToggleGlobalGesturePreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleGlobalGesturePreferenceFragment.java @@ -35,7 +35,7 @@ public class ToggleGlobalGesturePreferenceFragment mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { @Override public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { - toggleSwitch.setCheckedInternal(checked); + mSwitchBar.setCheckedInternal(checked); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked); onPreferenceToggled(mPreferenceKey, checked); return false; diff --git a/src/com/android/settings/accessibility/ToggleInversionPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleInversionPreferenceFragment.java index b6d5569b605..a7bc0b34211 100644 --- a/src/com/android/settings/accessibility/ToggleInversionPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleInversionPreferenceFragment.java @@ -71,7 +71,7 @@ public class ToggleInversionPreferenceFragment extends ToggleFeaturePreferenceFr protected void onInstallSwitchBarToggleSwitch() { super.onInstallSwitchBarToggleSwitch(); - mToggleSwitch.setCheckedInternal( + mSwitchBar.setCheckedInternal( Settings.Secure.getInt(getContentResolver(), ENABLED, 0) == 1); mSwitchBar.addOnSwitchChangeListener(this); } diff --git a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java index 8202a2a25f2..4650c06f83f 100644 --- a/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java +++ b/src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java @@ -35,7 +35,7 @@ public class ToggleScreenMagnificationPreferenceFragment mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { @Override public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { - toggleSwitch.setCheckedInternal(checked); + mSwitchBar.setCheckedInternal(checked); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked); onPreferenceToggled(mPreferenceKey, checked); return false; diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java index 7af6338bdc2..49fd6df78d4 100644 --- a/src/com/android/settings/print/PrintServiceSettingsFragment.java +++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java @@ -206,13 +206,13 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment switch (which) { case DialogInterface.BUTTON_POSITIVE: checked = true; - mToggleSwitch.setCheckedInternal(checked); + mSwitchBar.setCheckedInternal(checked); getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, checked); onPreferenceToggled(mPreferenceKey, checked); break; case DialogInterface.BUTTON_NEGATIVE: checked = false; - mToggleSwitch.setCheckedInternal(checked); + mSwitchBar.setCheckedInternal(checked); getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, checked); onPreferenceToggled(mPreferenceKey, checked); break; @@ -274,10 +274,10 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment List services = PrintSettingsUtils.readEnabledPrintServices(getActivity()); mServiceEnabled = services.contains(mComponentName); if (mServiceEnabled) { - mToggleSwitch.setCheckedInternal(true); + mSwitchBar.setCheckedInternal(true); mPrintersAdapter.enable(); } else { - mToggleSwitch.setCheckedInternal(false); + mSwitchBar.setCheckedInternal(false); mPrintersAdapter.disable(); } getActivity().invalidateOptionsMenu(); @@ -299,7 +299,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { if (checked) { if (!TextUtils.isEmpty(mEnableWarningMessage)) { - toggleSwitch.setCheckedInternal(false); + mSwitchBar.setCheckedInternal(false); getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, false); showDialog(DIALOG_ID_ENABLE_WARNING); return true; @@ -330,7 +330,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment // Enabled. final boolean enabled = arguments.getBoolean(PrintSettingsFragment.EXTRA_CHECKED); - mToggleSwitch.setCheckedInternal(enabled); + mSwitchBar.setCheckedInternal(enabled); // Settings title and intent. String settingsTitle = arguments.getString(PrintSettingsFragment.EXTRA_SETTINGS_TITLE); diff --git a/src/com/android/settings/widget/SwitchBar.java b/src/com/android/settings/widget/SwitchBar.java index 46b71efae02..c8afa1c7674 100644 --- a/src/com/android/settings/widget/SwitchBar.java +++ b/src/com/android/settings/widget/SwitchBar.java @@ -100,6 +100,11 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC mSwitch.setChecked(checked); } + public void setCheckedInternal(boolean checked) { + setTextViewLabel(checked); + mSwitch.setCheckedInternal(checked); + } + public boolean isChecked() { return mSwitch.isChecked(); }