Fix bug #15170508 When I initially load settings, all on/off toggles start in off position then move to on after pane loads

- refactor all the code that was using the Switch to control it thru the SwitchBar
- start the Switch as View.GONE and make it View.VISIBLE when it is set
as "enabled" or "checked" so that you dont see the Switch transition (it shows
only with it final state)

Change-Id: I382076bf3c819c530b5b2c06ca2429dfb2cdc6bf
This commit is contained in:
Fabrice Di Meglio
2014-05-27 16:43:40 -07:00
parent 22807d93a2
commit 1e52db8063
17 changed files with 101 additions and 90 deletions

View File

@@ -168,7 +168,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
private WifiManager mWifiManager; private WifiManager mWifiManager;
private SwitchBar mSwitchBar; private SwitchBar mSwitchBar;
private Switch mEnabledSwitch;
private boolean mLastEnabledState; private boolean mLastEnabledState;
private boolean mHaveDebugSettings; private boolean mHaveDebugSettings;
private boolean mDontPokeProperties; private boolean mDontPokeProperties;
@@ -389,9 +388,8 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
final SettingsActivity activity = (SettingsActivity) getActivity(); final SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar(); mSwitchBar = activity.getSwitchBar();
mEnabledSwitch = mSwitchBar.getSwitch();
if (mUnavailable) { if (mUnavailable) {
mEnabledSwitch.setEnabled(false); mSwitchBar.setSwitchEnabled(false);
return; return;
} }
} }
@@ -444,7 +442,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
final ContentResolver cr = getActivity().getContentResolver(); final ContentResolver cr = getActivity().getContentResolver();
mLastEnabledState = Settings.Global.getInt(cr, mLastEnabledState = Settings.Global.getInt(cr,
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0; Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != 0;
mEnabledSwitch.setChecked(mLastEnabledState); mSwitchBar.setSwitchChecked(mLastEnabledState);
setPrefsEnabledState(mLastEnabledState); setPrefsEnabledState(mLastEnabledState);
if (mHaveDebugSettings && !mLastEnabledState) { if (mHaveDebugSettings && !mLastEnabledState) {
@@ -455,7 +453,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
Settings.Global.putInt(getActivity().getContentResolver(), Settings.Global.putInt(getActivity().getContentResolver(),
Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1); Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1);
mLastEnabledState = true; mLastEnabledState = true;
mEnabledSwitch.setChecked(mLastEnabledState); mSwitchBar.setSwitchChecked(mLastEnabledState);
setPrefsEnabledState(mLastEnabledState); setPrefsEnabledState(mLastEnabledState);
} }
@@ -1225,9 +1223,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
@Override @Override
public void onSwitchChanged(Switch switchView, boolean isChecked) { public void onSwitchChanged(Switch switchView, boolean isChecked) {
if (switchView != mEnabledSwitch) {
return;
}
if (isChecked != mLastEnabledState) { if (isChecked != mLastEnabledState) {
if (isChecked) { if (isChecked) {
mDialogClicked = false; mDialogClicked = false;
@@ -1482,7 +1477,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
setPrefsEnabledState(mLastEnabledState); setPrefsEnabledState(mLastEnabledState);
} else { } else {
// Reset the toggle // Reset the toggle
mEnabledSwitch.setChecked(false); mSwitchBar.setSwitchChecked(false);
} }
} }
} }
@@ -1496,7 +1491,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
mAdbDialog = null; mAdbDialog = null;
} else if (dialog == mEnableDialog) { } else if (dialog == mEnableDialog) {
if (!mDialogClicked) { if (!mDialogClicked) {
mEnabledSwitch.setChecked(false); mSwitchBar.setSwitchChecked(false);
} }
mEnableDialog = null; mEnableDialog = null;
} }

View File

@@ -61,7 +61,6 @@ public class DreamSettings extends SettingsPreferenceFragment implements
private DreamBackend mBackend; private DreamBackend mBackend;
private DreamInfoAdapter mAdapter; private DreamInfoAdapter mAdapter;
private SwitchBar mSwitchBar; private SwitchBar mSwitchBar;
private Switch mSwitch;
private MenuItem[] mMenuItemsWhenEnabled; private MenuItem[] mMenuItemsWhenEnabled;
private boolean mRefreshing; private boolean mRefreshing;
@@ -124,7 +123,6 @@ public class DreamSettings extends SettingsPreferenceFragment implements
final SettingsActivity sa = (SettingsActivity) getActivity(); final SettingsActivity sa = (SettingsActivity) getActivity();
mSwitchBar = sa.getSwitchBar(); mSwitchBar = sa.getSwitchBar();
mSwitch = mSwitchBar.getSwitch();
} }
@Override @Override
@@ -263,8 +261,8 @@ public class DreamSettings extends SettingsPreferenceFragment implements
logd("refreshFromBackend()"); logd("refreshFromBackend()");
mRefreshing = true; mRefreshing = true;
boolean dreamsEnabled = mBackend.isEnabled(); boolean dreamsEnabled = mBackend.isEnabled();
if (mSwitch.isChecked() != dreamsEnabled) if (mSwitchBar.isSwitchChecked() != dreamsEnabled)
mSwitch.setChecked(dreamsEnabled); mSwitchBar.setSwitchChecked(dreamsEnabled);
mAdapter.clear(); mAdapter.clear();
if (dreamsEnabled) { if (dreamsEnabled) {

View File

@@ -70,7 +70,6 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
private SubtitleView mPreviewText; private SubtitleView mPreviewText;
private View mPreviewWindow; private View mPreviewWindow;
private SwitchBar mSwitchBar; private SwitchBar mSwitchBar;
private ToggleSwitch mToggleSwitch;
// Standard options. // Standard options.
private LocalePreference mLocale; private LocalePreference mLocale;
@@ -132,8 +131,7 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
SettingsActivity activity = (SettingsActivity) getActivity(); SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar(); mSwitchBar = activity.getSwitchBar();
mToggleSwitch = mSwitchBar.getSwitch(); mSwitchBar.setSwitchChecked(enabled);
mToggleSwitch.setCheckedInternal(enabled);
mPreviewWindow = view.findViewById(R.id.preview_window); mPreviewWindow = view.findViewById(R.id.preview_window);
@@ -200,10 +198,10 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
} }
protected void onInstallSwitchBarToggleSwitch() { protected void onInstallSwitchBarToggleSwitch() {
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { mSwitchBar.setSwitchOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
@Override @Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
toggleSwitch.setCheckedInternal(checked); mSwitchBar.setSwitchChecked(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);
@@ -222,7 +220,7 @@ public class CaptionPropertiesFragment extends SettingsPreferenceFragment
private void removeSwitchBarToggleSwitch() { private void removeSwitchBarToggleSwitch() {
mSwitchBar.hide(); mSwitchBar.hide();
mToggleSwitch.setOnBeforeCheckedChangeListener(null); mSwitchBar.setSwitchOnBeforeCheckedChangeListener(null);
} }
private void initializeAllPreferences() { private void initializeAllPreferences() {

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.setSwitchChecked(enabled);
} }
}; };
@@ -265,13 +265,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.setSwitchChecked(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.setSwitchChecked(checked);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked); getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked); onPreferenceToggled(mPreferenceKey, checked);
break; break;
@@ -283,15 +283,15 @@ public class ToggleAccessibilityServicePreferenceFragment
@Override @Override
protected void onInstallSwitchBarToggleSwitch() { protected void onInstallSwitchBarToggleSwitch() {
super.onInstallSwitchBarToggleSwitch(); super.onInstallSwitchBarToggleSwitch();
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { mSwitchBar.setSwitchOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
@Override @Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
if (checked) { if (checked) {
toggleSwitch.setCheckedInternal(false); mSwitchBar.setSwitchChecked(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.setSwitchChecked(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

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

View File

@@ -40,7 +40,6 @@ public abstract class ToggleFeaturePreferenceFragment
extends SettingsPreferenceFragment { extends SettingsPreferenceFragment {
protected SwitchBar mSwitchBar; protected SwitchBar mSwitchBar;
protected ToggleSwitch mToggleSwitch;
protected String mPreferenceKey; protected String mPreferenceKey;
protected Preference mSummaryPreference; protected Preference mSummaryPreference;
@@ -89,7 +88,6 @@ public abstract class ToggleFeaturePreferenceFragment
SettingsActivity activity = (SettingsActivity) getActivity(); SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar(); mSwitchBar = activity.getSwitchBar();
mToggleSwitch = mSwitchBar.getSwitch();
onProcessArguments(getArguments()); onProcessArguments(getArguments());
} }
@@ -132,7 +130,7 @@ public abstract class ToggleFeaturePreferenceFragment
} }
private void removeActionBarToggleSwitch() { private void removeActionBarToggleSwitch() {
mToggleSwitch.setOnBeforeCheckedChangeListener(null); mSwitchBar.setSwitchOnBeforeCheckedChangeListener(null);
onRemoveSwitchBarToggleSwitch(); onRemoveSwitchBarToggleSwitch();
mSwitchBar.hide(); mSwitchBar.hide();
} }
@@ -153,7 +151,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.setSwitchChecked(enabled);
} }
// Title. // Title.

View File

@@ -32,10 +32,10 @@ public class ToggleGlobalGesturePreferenceFragment
@Override @Override
protected void onInstallSwitchBarToggleSwitch() { protected void onInstallSwitchBarToggleSwitch() {
super.onInstallSwitchBarToggleSwitch(); super.onInstallSwitchBarToggleSwitch();
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { mSwitchBar.setSwitchOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
@Override @Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
toggleSwitch.setCheckedInternal(checked); mSwitchBar.setSwitchChecked(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.setSwitchChecked(
Settings.Secure.getInt(getContentResolver(), ENABLED, 0) == 1); Settings.Secure.getInt(getContentResolver(), ENABLED, 0) == 1);
mSwitchBar.addOnSwitchChangeListener(this); mSwitchBar.addOnSwitchChangeListener(this);
} }

View File

@@ -32,10 +32,10 @@ public class ToggleScreenMagnificationPreferenceFragment
@Override @Override
protected void onInstallSwitchBarToggleSwitch() { protected void onInstallSwitchBarToggleSwitch() {
super.onInstallSwitchBarToggleSwitch(); super.onInstallSwitchBarToggleSwitch();
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() { mSwitchBar.setSwitchOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
@Override @Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) { public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
toggleSwitch.setCheckedInternal(checked); mSwitchBar.setSwitchChecked(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

@@ -40,7 +40,6 @@ import com.android.settings.widget.SwitchBar;
*/ */
public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener { public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener {
private Context mContext; private Context mContext;
private Switch mSwitch;
private SwitchBar mSwitchBar; private SwitchBar mSwitchBar;
private boolean mValidListener; private boolean mValidListener;
private final LocalBluetoothAdapter mLocalAdapter; private final LocalBluetoothAdapter mLocalAdapter;
@@ -75,14 +74,13 @@ public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener
public BluetoothEnabler(Context context, SwitchBar switchBar) { public BluetoothEnabler(Context context, SwitchBar switchBar) {
mContext = context; mContext = context;
mSwitchBar = switchBar; mSwitchBar = switchBar;
mSwitch = switchBar.getSwitch();
mValidListener = false; mValidListener = false;
LocalBluetoothManager manager = LocalBluetoothManager.getInstance(context); LocalBluetoothManager manager = LocalBluetoothManager.getInstance(context);
if (manager == null) { if (manager == null) {
// Bluetooth is not supported // Bluetooth is not supported
mLocalAdapter = null; mLocalAdapter = null;
mSwitch.setEnabled(false); mSwitchBar.setSwitchEnabled(false);
} else { } else {
mLocalAdapter = manager.getBluetoothAdapter(); mLocalAdapter = manager.getBluetoothAdapter();
} }
@@ -91,7 +89,7 @@ public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener
public void resume(Context context) { public void resume(Context context) {
if (mLocalAdapter == null) { if (mLocalAdapter == null) {
mSwitch.setEnabled(false); mSwitchBar.setSwitchEnabled(false);
return; return;
} }
@@ -122,36 +120,36 @@ public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener
void handleStateChanged(int state) { void handleStateChanged(int state) {
switch (state) { switch (state) {
case BluetoothAdapter.STATE_TURNING_ON: case BluetoothAdapter.STATE_TURNING_ON:
mSwitch.setEnabled(false); mSwitchBar.setSwitchEnabled(false);
break; break;
case BluetoothAdapter.STATE_ON: case BluetoothAdapter.STATE_ON:
setChecked(true); setChecked(true);
mSwitch.setEnabled(true); mSwitchBar.setSwitchEnabled(true);
updateSearchIndex(true); updateSearchIndex(true);
break; break;
case BluetoothAdapter.STATE_TURNING_OFF: case BluetoothAdapter.STATE_TURNING_OFF:
mSwitch.setEnabled(false); mSwitchBar.setSwitchEnabled(false);
break; break;
case BluetoothAdapter.STATE_OFF: case BluetoothAdapter.STATE_OFF:
setChecked(false); setChecked(false);
mSwitch.setEnabled(true); mSwitchBar.setSwitchEnabled(true);
updateSearchIndex(false); updateSearchIndex(false);
break; break;
default: default:
setChecked(false); setChecked(false);
mSwitch.setEnabled(true); mSwitchBar.setSwitchEnabled(true);
updateSearchIndex(false); updateSearchIndex(false);
} }
} }
private void setChecked(boolean isChecked) { private void setChecked(boolean isChecked) {
if (isChecked != mSwitch.isChecked()) { if (isChecked != mSwitchBar.isSwitchChecked()) {
// set listener to null, so onCheckedChanged won't be called // set listener to null, so onCheckedChanged won't be called
// if the checked status on Switch isn't changed by user click // if the checked status on Switch isn't changed by user click
if (mValidListener) { if (mValidListener) {
mSwitchBar.removeOnSwitchChangeListener(this); mSwitchBar.removeOnSwitchChangeListener(this);
} }
mSwitch.setChecked(isChecked); mSwitchBar.setSwitchChecked(isChecked);
if (mValidListener) { if (mValidListener) {
mSwitchBar.addOnSwitchChangeListener(this); mSwitchBar.addOnSwitchChangeListener(this);
} }
@@ -180,6 +178,6 @@ public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener
if (mLocalAdapter != null) { if (mLocalAdapter != null) {
mLocalAdapter.setBluetoothEnabled(isChecked); mLocalAdapter.setBluetoothEnabled(isChecked);
} }
mSwitch.setEnabled(false); mSwitchBar.setSwitchEnabled(false);
} }
} }

View File

@@ -53,7 +53,6 @@ public class LocationSettings extends LocationSettingsBase
private static final String KEY_LOCATION_SERVICES = "location_services"; private static final String KEY_LOCATION_SERVICES = "location_services";
private SwitchBar mSwitchBar; private SwitchBar mSwitchBar;
private Switch mSwitch;
private boolean mValidListener; private boolean mValidListener;
private Preference mLocationMode; private Preference mLocationMode;
private PreferenceCategory mCategoryRecentLocationRequests; private PreferenceCategory mCategoryRecentLocationRequests;
@@ -72,7 +71,6 @@ public class LocationSettings extends LocationSettingsBase
final SettingsActivity activity = (SettingsActivity) getActivity(); final SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar(); mSwitchBar = activity.getSwitchBar();
mSwitch = mSwitchBar.getSwitch();
} }
@Override @Override
@@ -221,16 +219,16 @@ public class LocationSettings extends LocationSettingsBase
// corner cases, the location might still be enabled. In such case the master switch should // corner cases, the location might still be enabled. In such case the master switch should
// be disabled but checked. // be disabled but checked.
boolean enabled = (mode != android.provider.Settings.Secure.LOCATION_MODE_OFF); boolean enabled = (mode != android.provider.Settings.Secure.LOCATION_MODE_OFF);
mSwitch.setEnabled(!restricted); mSwitchBar.setSwitchEnabled(!restricted);
mLocationMode.setEnabled(enabled && !restricted); mLocationMode.setEnabled(enabled && !restricted);
mCategoryRecentLocationRequests.setEnabled(enabled); mCategoryRecentLocationRequests.setEnabled(enabled);
if (enabled != mSwitch.isChecked()) { if (enabled != mSwitchBar.isSwitchChecked()) {
// set listener to null so that that code below doesn't trigger onCheckedChanged() // set listener to null so that that code below doesn't trigger onCheckedChanged()
if (mValidListener) { if (mValidListener) {
mSwitchBar.removeOnSwitchChangeListener(this); mSwitchBar.removeOnSwitchChangeListener(this);
} }
mSwitch.setChecked(enabled); mSwitchBar.setSwitchChecked(enabled);
if (mValidListener) { if (mValidListener) {
mSwitchBar.addOnSwitchChangeListener(this); mSwitchBar.addOnSwitchChangeListener(this);
} }

View File

@@ -33,7 +33,6 @@ public class AndroidBeam extends Fragment
private View mView; private View mView;
private NfcAdapter mNfcAdapter; private NfcAdapter mNfcAdapter;
private SwitchBar mSwitchBar; private SwitchBar mSwitchBar;
private Switch mSwitch;
private CharSequence mOldActivityTitle; private CharSequence mOldActivityTitle;
@Override @Override
@@ -63,8 +62,7 @@ public class AndroidBeam extends Fragment
SettingsActivity activity = (SettingsActivity) getActivity(); SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar(); mSwitchBar = activity.getSwitchBar();
mSwitch = mSwitchBar.getSwitch(); mSwitchBar.setSwitchChecked(mNfcAdapter.isNdefPushEnabled());
mSwitch.setChecked(mNfcAdapter.isNdefPushEnabled());
} }
@Override @Override
@@ -94,15 +92,15 @@ public class AndroidBeam extends Fragment
@Override @Override
public void onSwitchChanged(Switch switchView, boolean desiredState) { public void onSwitchChanged(Switch switchView, boolean desiredState) {
boolean success = false; boolean success = false;
mSwitch.setEnabled(false); mSwitchBar.setSwitchEnabled(false);
if (desiredState) { if (desiredState) {
success = mNfcAdapter.enableNdefPush(); success = mNfcAdapter.enableNdefPush();
} else { } else {
success = mNfcAdapter.disableNdefPush(); success = mNfcAdapter.disableNdefPush();
} }
if (success) { if (success) {
mSwitch.setChecked(desiredState); mSwitchBar.setSwitchChecked(desiredState);
} }
mSwitch.setEnabled(true); mSwitchBar.setSwitchEnabled(true);
} }
} }

View File

@@ -103,7 +103,6 @@ public class ZenModeSettings extends SettingsPreferenceFragment implements Index
private final SettingsObserver mSettingsObserver = new SettingsObserver(); private final SettingsObserver mSettingsObserver = new SettingsObserver();
private SwitchBar mSwitchBar; private SwitchBar mSwitchBar;
private Switch mSwitch;
private Context mContext; private Context mContext;
private PackageManager mPM; private PackageManager mPM;
private ZenModeConfig mConfig; private ZenModeConfig mConfig;
@@ -155,7 +154,6 @@ public class ZenModeSettings extends SettingsPreferenceFragment implements Index
if (DEBUG) Log.d(TAG, "Loaded mConfig=" + mConfig); if (DEBUG) Log.d(TAG, "Loaded mConfig=" + mConfig);
mSwitchBar = ((SettingsActivity) mContext).getSwitchBar(); mSwitchBar = ((SettingsActivity) mContext).getSwitchBar();
mSwitch = mSwitchBar.getSwitch();
final PreferenceCategory general = (PreferenceCategory) root.findPreference(KEY_GENERAL); final PreferenceCategory general = (PreferenceCategory) root.findPreference(KEY_GENERAL);
@@ -384,8 +382,8 @@ public class ZenModeSettings extends SettingsPreferenceFragment implements Index
private void updateZenMode() { private void updateZenMode() {
final boolean zenMode = Global.getInt(getContentResolver(), final boolean zenMode = Global.getInt(getContentResolver(),
Global.ZEN_MODE, Global.ZEN_MODE_OFF) != Global.ZEN_MODE_OFF; Global.ZEN_MODE, Global.ZEN_MODE_OFF) != Global.ZEN_MODE_OFF;
if (mSwitch.isChecked() != zenMode) { if (mSwitchBar.isSwitchChecked() != zenMode) {
mSwitch.setChecked(zenMode); mSwitchBar.setSwitchChecked(zenMode);
mIgnoreNext = true; mIgnoreNext = true;
} }
} }

View File

@@ -112,7 +112,6 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
}; };
private SwitchBar mSwitchBar; private SwitchBar mSwitchBar;
private ToggleSwitch mToggleSwitch;
private String mPreferenceKey; private String mPreferenceKey;
@@ -209,13 +208,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.setSwitchChecked(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.setSwitchChecked(checked);
getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, checked); getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked); onPreferenceToggled(mPreferenceKey, checked);
break; break;
@@ -228,7 +227,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
ListView listView = getListView(); ListView listView = getListView();
ViewGroup contentRoot = (ViewGroup) listView.getParent(); ViewGroup contentRoot = (ViewGroup) listView.getParent();
View emptyView = listView.getEmptyView(); View emptyView = listView.getEmptyView();
if (!mToggleSwitch.isChecked()) { if (!mSwitchBar.isSwitchChecked()) {
if (emptyView != null && emptyView.getId() != R.id.empty_print_state) { if (emptyView != null && emptyView.getId() != R.id.empty_print_state) {
contentRoot.removeView(emptyView); contentRoot.removeView(emptyView);
emptyView = null; emptyView = null;
@@ -277,10 +276,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.setSwitchChecked(true);
mPrintersAdapter.enable(); mPrintersAdapter.enable();
} else { } else {
mToggleSwitch.setCheckedInternal(false); mSwitchBar.setSwitchChecked(false);
mPrintersAdapter.disable(); mPrintersAdapter.disable();
} }
getActivity().invalidateOptionsMenu(); getActivity().invalidateOptionsMenu();
@@ -293,14 +292,12 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
final SettingsActivity activity = (SettingsActivity) getActivity(); final SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar(); mSwitchBar = activity.getSwitchBar();
mSwitchBar.setSwitchOnBeforeCheckedChangeListener(new ToggleSwitch.OnBeforeCheckedChangeListener() {
mToggleSwitch = mSwitchBar.getSwitch();
mToggleSwitch.setOnBeforeCheckedChangeListener(new ToggleSwitch.OnBeforeCheckedChangeListener() {
@Override @Override
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.setSwitchChecked(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;
@@ -331,7 +328,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.setSwitchChecked(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

@@ -84,10 +84,7 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
// Default is hide // Default is hide
setVisibility(View.GONE); setVisibility(View.GONE);
} mSwitch.setVisibility(View.GONE);
public ToggleSwitch getSwitch() {
return mSwitch;
} }
public void show() { public void show() {
@@ -125,4 +122,39 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
} }
mSwitchChangeListeners.remove(listener); mSwitchChangeListeners.remove(listener);
} }
public void setSwitchOnBeforeCheckedChangeListener(
ToggleSwitch.OnBeforeCheckedChangeListener listener) {
mSwitch.setOnBeforeCheckedChangeListener(listener);
}
public void setSwitchChecked(boolean checked) {
setSwitchChecked(checked, false);
}
public void setSwitchChecked(boolean checked, boolean checkBefore) {
if (checkBefore) {
ToggleSwitch.OnBeforeCheckedChangeListener listener =
mSwitch.getOnBeforeCheckedChangeListener();
if (listener != null && listener.onBeforeCheckedChanged(mSwitch, checked)) {
return;
}
}
mSwitch.setCheckedInternal(checked);
if (mSwitch.getVisibility() == View.GONE) {
mSwitch.setVisibility(View.VISIBLE);
}
}
public void setSwitchEnabled(boolean enabled) {
mSwitch.setEnabled(enabled);
if (mSwitch.getVisibility() == View.GONE) {
mSwitch.setVisibility(View.VISIBLE);
}
}
public boolean isSwitchChecked() {
return mSwitch.isChecked();
}
} }

View File

@@ -48,6 +48,10 @@ public class ToggleSwitch extends Switch {
mOnBeforeListener = listener; mOnBeforeListener = listener;
} }
public OnBeforeCheckedChangeListener getOnBeforeCheckedChangeListener() {
return mOnBeforeListener;
}
@Override @Override
public void setChecked(boolean checked) { public void setChecked(boolean checked) {
if (mOnBeforeListener != null if (mOnBeforeListener != null

View File

@@ -27,7 +27,6 @@ import android.net.wifi.WifiManager;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.provider.Settings; import android.provider.Settings;
import android.widget.CompoundButton;
import android.widget.Switch; import android.widget.Switch;
import android.widget.Toast; import android.widget.Toast;
@@ -40,7 +39,6 @@ import java.util.concurrent.atomic.AtomicBoolean;
public class WifiEnabler implements SwitchBar.OnSwitchChangeListener { public class WifiEnabler implements SwitchBar.OnSwitchChangeListener {
private Context mContext; private Context mContext;
private Switch mSwitch;
private SwitchBar mSwitchBar; private SwitchBar mSwitchBar;
private AtomicBoolean mConnected = new AtomicBoolean(false); private AtomicBoolean mConnected = new AtomicBoolean(false);
@@ -87,7 +85,6 @@ public class WifiEnabler implements SwitchBar.OnSwitchChangeListener {
public WifiEnabler(Context context, SwitchBar switchBar) { public WifiEnabler(Context context, SwitchBar switchBar) {
mContext = context; mContext = context;
mSwitchBar = switchBar; mSwitchBar = switchBar;
mSwitch = switchBar.getSwitch();
mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION); mIntentFilter = new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION);
@@ -113,24 +110,24 @@ public class WifiEnabler implements SwitchBar.OnSwitchChangeListener {
private void handleWifiStateChanged(int state) { private void handleWifiStateChanged(int state) {
switch (state) { switch (state) {
case WifiManager.WIFI_STATE_ENABLING: case WifiManager.WIFI_STATE_ENABLING:
mSwitch.setEnabled(false); mSwitchBar.setSwitchEnabled(false);
break; break;
case WifiManager.WIFI_STATE_ENABLED: case WifiManager.WIFI_STATE_ENABLED:
setSwitchChecked(true); setSwitchChecked(true);
mSwitch.setEnabled(true); mSwitchBar.setSwitchEnabled(true);
updateSearchIndex(true); updateSearchIndex(true);
break; break;
case WifiManager.WIFI_STATE_DISABLING: case WifiManager.WIFI_STATE_DISABLING:
mSwitch.setEnabled(false); mSwitchBar.setSwitchEnabled(false);
break; break;
case WifiManager.WIFI_STATE_DISABLED: case WifiManager.WIFI_STATE_DISABLED:
setSwitchChecked(false); setSwitchChecked(false);
mSwitch.setEnabled(true); mSwitchBar.setSwitchEnabled(true);
updateSearchIndex(false); updateSearchIndex(false);
break; break;
default: default:
setSwitchChecked(false); setSwitchChecked(false);
mSwitch.setEnabled(true); mSwitchBar.setSwitchEnabled(true);
updateSearchIndex(false); updateSearchIndex(false);
} }
} }
@@ -145,9 +142,9 @@ public class WifiEnabler implements SwitchBar.OnSwitchChangeListener {
} }
private void setSwitchChecked(boolean checked) { private void setSwitchChecked(boolean checked) {
if (checked != mSwitch.isChecked()) { if (checked != mSwitchBar.isSwitchChecked()) {
mStateMachineEvent = true; mStateMachineEvent = true;
mSwitch.setChecked(checked); mSwitchBar.setSwitchChecked(checked);
mStateMachineEvent = false; mStateMachineEvent = false;
} }
} }
@@ -189,10 +186,10 @@ public class WifiEnabler implements SwitchBar.OnSwitchChangeListener {
mWifiManager.setWifiApEnabled(null, false); mWifiManager.setWifiApEnabled(null, false);
} }
mSwitch.setEnabled(false); mSwitchBar.setSwitchEnabled(false);
if (!mWifiManager.setWifiEnabled(isChecked)) { if (!mWifiManager.setWifiEnabled(isChecked)) {
// Error // Error
mSwitch.setEnabled(true); mSwitchBar.setSwitchEnabled(true);
Toast.makeText(mContext, R.string.wifi_error, Toast.LENGTH_SHORT).show(); Toast.makeText(mContext, R.string.wifi_error, Toast.LENGTH_SHORT).show();
} }
} }