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
This commit is contained in:
Fabrice Di Meglio
2014-06-27 19:13:19 -07:00
parent d2b1e441b7
commit 006b2cca13
9 changed files with 23 additions and 19 deletions

View File

@@ -151,9 +151,8 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
final boolean enabled = mCaptioningManager.isEnabled(); final boolean enabled = mCaptioningManager.isEnabled();
SettingsActivity activity = (SettingsActivity) getActivity(); SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar(); mSwitchBar = activity.getSwitchBar();
mSwitchBar.setTextViewLabel(enabled); mSwitchBar.setCheckedInternal(enabled);
mToggleSwitch = mSwitchBar.getSwitch(); mToggleSwitch = mSwitchBar.getSwitch();
mToggleSwitch.setCheckedInternal(enabled);
getPreferenceScreen().setEnabled(enabled); getPreferenceScreen().setEnabled(enabled);
@@ -228,7 +227,7 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
@Override @Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
toggleSwitch.setCheckedInternal(checked); mSwitchBar.setCheckedInternal(checked);
Settings.Secure.putInt(getActivity().getContentResolver(), Settings.Secure.putInt(getActivity().getContentResolver(),
Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, checked ? 1 : 0); Settings.Secure.ACCESSIBILITY_CAPTIONING_ENABLED, checked ? 1 : 0);
getPreferenceScreen().setEnabled(checked); getPreferenceScreen().setEnabled(checked);

View File

@@ -58,7 +58,7 @@ public class ToggleAccessibilityServicePreferenceFragment
String settingValue = Settings.Secure.getString(getContentResolver(), String settingValue = Settings.Secure.getString(getContentResolver(),
Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES); Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES);
final boolean enabled = settingValue.contains(mComponentName.flattenToString()); final boolean enabled = settingValue.contains(mComponentName.flattenToString());
mToggleSwitch.setCheckedInternal(enabled); mSwitchBar.setCheckedInternal(enabled);
} }
}; };
@@ -263,13 +263,13 @@ public class ToggleAccessibilityServicePreferenceFragment
switch (which) { switch (which) {
case DialogInterface.BUTTON_POSITIVE: case DialogInterface.BUTTON_POSITIVE:
checked = (mShownDialogId == DIALOG_ID_ENABLE_WARNING); checked = (mShownDialogId == DIALOG_ID_ENABLE_WARNING);
mToggleSwitch.setCheckedInternal(checked); mSwitchBar.setCheckedInternal(checked);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked); onPreferenceToggled(mPreferenceKey, checked);
break; break;
case DialogInterface.BUTTON_NEGATIVE: case DialogInterface.BUTTON_NEGATIVE:
checked = (mShownDialogId == DIALOG_ID_DISABLE_WARNING); checked = (mShownDialogId == DIALOG_ID_DISABLE_WARNING);
mToggleSwitch.setCheckedInternal(checked); mSwitchBar.setCheckedInternal(checked);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked); onPreferenceToggled(mPreferenceKey, checked);
break; break;
@@ -285,11 +285,11 @@ public class ToggleAccessibilityServicePreferenceFragment
@Override @Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
if (checked) { if (checked) {
toggleSwitch.setCheckedInternal(false); mSwitchBar.setCheckedInternal(false);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, false); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, false);
showDialog(DIALOG_ID_ENABLE_WARNING); showDialog(DIALOG_ID_ENABLE_WARNING);
} else { } else {
toggleSwitch.setCheckedInternal(true); mSwitchBar.setCheckedInternal(true);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, true); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, true);
showDialog(DIALOG_ID_DISABLE_WARNING); showDialog(DIALOG_ID_DISABLE_WARNING);
} }

View File

@@ -72,7 +72,7 @@ public class ToggleDaltonizerPreferenceFragment extends ToggleFeaturePreferenceF
protected void onInstallSwitchBarToggleSwitch() { protected void onInstallSwitchBarToggleSwitch() {
super.onInstallSwitchBarToggleSwitch(); super.onInstallSwitchBarToggleSwitch();
mToggleSwitch.setCheckedInternal( mSwitchBar.setCheckedInternal(
Settings.Secure.getInt(getContentResolver(), ENABLED, 0) == 1); Settings.Secure.getInt(getContentResolver(), ENABLED, 0) == 1);
mSwitchBar.addOnSwitchChangeListener(this); mSwitchBar.addOnSwitchChangeListener(this);
} }

View File

@@ -153,7 +153,7 @@ public abstract class ToggleFeaturePreferenceFragment
// Enabled. // Enabled.
if (arguments.containsKey(AccessibilitySettings.EXTRA_CHECKED)) { if (arguments.containsKey(AccessibilitySettings.EXTRA_CHECKED)) {
final boolean enabled = arguments.getBoolean(AccessibilitySettings.EXTRA_CHECKED); final boolean enabled = arguments.getBoolean(AccessibilitySettings.EXTRA_CHECKED);
mToggleSwitch.setCheckedInternal(enabled); mSwitchBar.setCheckedInternal(enabled);
} }
// Title. // Title.

View File

@@ -35,7 +35,7 @@ public class ToggleGlobalGesturePreferenceFragment
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
@Override @Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
toggleSwitch.setCheckedInternal(checked); mSwitchBar.setCheckedInternal(checked);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked); onPreferenceToggled(mPreferenceKey, checked);
return false; return false;

View File

@@ -71,7 +71,7 @@ public class ToggleInversionPreferenceFragment extends ToggleFeaturePreferenceFr
protected void onInstallSwitchBarToggleSwitch() { protected void onInstallSwitchBarToggleSwitch() {
super.onInstallSwitchBarToggleSwitch(); super.onInstallSwitchBarToggleSwitch();
mToggleSwitch.setCheckedInternal( mSwitchBar.setCheckedInternal(
Settings.Secure.getInt(getContentResolver(), ENABLED, 0) == 1); Settings.Secure.getInt(getContentResolver(), ENABLED, 0) == 1);
mSwitchBar.addOnSwitchChangeListener(this); mSwitchBar.addOnSwitchChangeListener(this);
} }

View File

@@ -35,7 +35,7 @@ public class ToggleScreenMagnificationPreferenceFragment
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
@Override @Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
toggleSwitch.setCheckedInternal(checked); mSwitchBar.setCheckedInternal(checked);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked); onPreferenceToggled(mPreferenceKey, checked);
return false; return false;

View File

@@ -206,13 +206,13 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
switch (which) { switch (which) {
case DialogInterface.BUTTON_POSITIVE: case DialogInterface.BUTTON_POSITIVE:
checked = true; checked = true;
mToggleSwitch.setCheckedInternal(checked); mSwitchBar.setCheckedInternal(checked);
getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, checked); getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked); onPreferenceToggled(mPreferenceKey, checked);
break; break;
case DialogInterface.BUTTON_NEGATIVE: case DialogInterface.BUTTON_NEGATIVE:
checked = false; checked = false;
mToggleSwitch.setCheckedInternal(checked); mSwitchBar.setCheckedInternal(checked);
getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, checked); getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked); onPreferenceToggled(mPreferenceKey, checked);
break; break;
@@ -274,10 +274,10 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
List<ComponentName> services = PrintSettingsUtils.readEnabledPrintServices(getActivity()); List<ComponentName> services = PrintSettingsUtils.readEnabledPrintServices(getActivity());
mServiceEnabled = services.contains(mComponentName); mServiceEnabled = services.contains(mComponentName);
if (mServiceEnabled) { if (mServiceEnabled) {
mToggleSwitch.setCheckedInternal(true); mSwitchBar.setCheckedInternal(true);
mPrintersAdapter.enable(); mPrintersAdapter.enable();
} else { } else {
mToggleSwitch.setCheckedInternal(false); mSwitchBar.setCheckedInternal(false);
mPrintersAdapter.disable(); mPrintersAdapter.disable();
} }
getActivity().invalidateOptionsMenu(); getActivity().invalidateOptionsMenu();
@@ -299,7 +299,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
if (checked) { if (checked) {
if (!TextUtils.isEmpty(mEnableWarningMessage)) { if (!TextUtils.isEmpty(mEnableWarningMessage)) {
toggleSwitch.setCheckedInternal(false); mSwitchBar.setCheckedInternal(false);
getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, false); getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, false);
showDialog(DIALOG_ID_ENABLE_WARNING); showDialog(DIALOG_ID_ENABLE_WARNING);
return true; return true;
@@ -330,7 +330,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
// Enabled. // Enabled.
final boolean enabled = arguments.getBoolean(PrintSettingsFragment.EXTRA_CHECKED); final boolean enabled = arguments.getBoolean(PrintSettingsFragment.EXTRA_CHECKED);
mToggleSwitch.setCheckedInternal(enabled); mSwitchBar.setCheckedInternal(enabled);
// Settings title and intent. // Settings title and intent.
String settingsTitle = arguments.getString(PrintSettingsFragment.EXTRA_SETTINGS_TITLE); String settingsTitle = arguments.getString(PrintSettingsFragment.EXTRA_SETTINGS_TITLE);

View File

@@ -100,6 +100,11 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
mSwitch.setChecked(checked); mSwitch.setChecked(checked);
} }
public void setCheckedInternal(boolean checked) {
setTextViewLabel(checked);
mSwitch.setCheckedInternal(checked);
}
public boolean isChecked() { public boolean isChecked() {
return mSwitch.isChecked(); return mSwitch.isChecked();
} }