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

View File

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

View File

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

View File

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

View File

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

View File

@@ -40,7 +40,6 @@ public abstract class ToggleFeaturePreferenceFragment
extends SettingsPreferenceFragment {
protected SwitchBar mSwitchBar;
protected ToggleSwitch mToggleSwitch;
protected String mPreferenceKey;
protected Preference mSummaryPreference;
@@ -89,7 +88,6 @@ public abstract class ToggleFeaturePreferenceFragment
SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar();
mToggleSwitch = mSwitchBar.getSwitch();
onProcessArguments(getArguments());
}
@@ -132,7 +130,7 @@ public abstract class ToggleFeaturePreferenceFragment
}
private void removeActionBarToggleSwitch() {
mToggleSwitch.setOnBeforeCheckedChangeListener(null);
mSwitchBar.setSwitchOnBeforeCheckedChangeListener(null);
onRemoveSwitchBarToggleSwitch();
mSwitchBar.hide();
}
@@ -153,7 +151,7 @@ public abstract class ToggleFeaturePreferenceFragment
// Enabled.
if (arguments.containsKey(AccessibilitySettings.EXTRA_CHECKED)) {
final boolean enabled = arguments.getBoolean(AccessibilitySettings.EXTRA_CHECKED);
mToggleSwitch.setCheckedInternal(enabled);
mSwitchBar.setSwitchChecked(enabled);
}
// Title.

View File

@@ -32,10 +32,10 @@ public class ToggleGlobalGesturePreferenceFragment
@Override
protected void onInstallSwitchBarToggleSwitch() {
super.onInstallSwitchBarToggleSwitch();
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
mSwitchBar.setSwitchOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
@Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
toggleSwitch.setCheckedInternal(checked);
mSwitchBar.setSwitchChecked(checked);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked);
return false;

View File

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

View File

@@ -32,10 +32,10 @@ public class ToggleScreenMagnificationPreferenceFragment
@Override
protected void onInstallSwitchBarToggleSwitch() {
super.onInstallSwitchBarToggleSwitch();
mToggleSwitch.setOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
mSwitchBar.setSwitchOnBeforeCheckedChangeListener(new OnBeforeCheckedChangeListener() {
@Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
toggleSwitch.setCheckedInternal(checked);
mSwitchBar.setSwitchChecked(checked);
getArguments().putBoolean(AccessibilitySettings.EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked);
return false;

View File

@@ -40,7 +40,6 @@ import com.android.settings.widget.SwitchBar;
*/
public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener {
private Context mContext;
private Switch mSwitch;
private SwitchBar mSwitchBar;
private boolean mValidListener;
private final LocalBluetoothAdapter mLocalAdapter;
@@ -75,14 +74,13 @@ public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener
public BluetoothEnabler(Context context, SwitchBar switchBar) {
mContext = context;
mSwitchBar = switchBar;
mSwitch = switchBar.getSwitch();
mValidListener = false;
LocalBluetoothManager manager = LocalBluetoothManager.getInstance(context);
if (manager == null) {
// Bluetooth is not supported
mLocalAdapter = null;
mSwitch.setEnabled(false);
mSwitchBar.setSwitchEnabled(false);
} else {
mLocalAdapter = manager.getBluetoothAdapter();
}
@@ -91,7 +89,7 @@ public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener
public void resume(Context context) {
if (mLocalAdapter == null) {
mSwitch.setEnabled(false);
mSwitchBar.setSwitchEnabled(false);
return;
}
@@ -122,36 +120,36 @@ public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener
void handleStateChanged(int state) {
switch (state) {
case BluetoothAdapter.STATE_TURNING_ON:
mSwitch.setEnabled(false);
mSwitchBar.setSwitchEnabled(false);
break;
case BluetoothAdapter.STATE_ON:
setChecked(true);
mSwitch.setEnabled(true);
mSwitchBar.setSwitchEnabled(true);
updateSearchIndex(true);
break;
case BluetoothAdapter.STATE_TURNING_OFF:
mSwitch.setEnabled(false);
mSwitchBar.setSwitchEnabled(false);
break;
case BluetoothAdapter.STATE_OFF:
setChecked(false);
mSwitch.setEnabled(true);
mSwitchBar.setSwitchEnabled(true);
updateSearchIndex(false);
break;
default:
setChecked(false);
mSwitch.setEnabled(true);
mSwitchBar.setSwitchEnabled(true);
updateSearchIndex(false);
}
}
private void setChecked(boolean isChecked) {
if (isChecked != mSwitch.isChecked()) {
if (isChecked != mSwitchBar.isSwitchChecked()) {
// set listener to null, so onCheckedChanged won't be called
// if the checked status on Switch isn't changed by user click
if (mValidListener) {
mSwitchBar.removeOnSwitchChangeListener(this);
}
mSwitch.setChecked(isChecked);
mSwitchBar.setSwitchChecked(isChecked);
if (mValidListener) {
mSwitchBar.addOnSwitchChangeListener(this);
}
@@ -180,6 +178,6 @@ public final class BluetoothEnabler implements SwitchBar.OnSwitchChangeListener
if (mLocalAdapter != null) {
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 SwitchBar mSwitchBar;
private Switch mSwitch;
private boolean mValidListener;
private Preference mLocationMode;
private PreferenceCategory mCategoryRecentLocationRequests;
@@ -72,7 +71,6 @@ public class LocationSettings extends LocationSettingsBase
final SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar();
mSwitch = mSwitchBar.getSwitch();
}
@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
// be disabled but checked.
boolean enabled = (mode != android.provider.Settings.Secure.LOCATION_MODE_OFF);
mSwitch.setEnabled(!restricted);
mSwitchBar.setSwitchEnabled(!restricted);
mLocationMode.setEnabled(enabled && !restricted);
mCategoryRecentLocationRequests.setEnabled(enabled);
if (enabled != mSwitch.isChecked()) {
if (enabled != mSwitchBar.isSwitchChecked()) {
// set listener to null so that that code below doesn't trigger onCheckedChanged()
if (mValidListener) {
mSwitchBar.removeOnSwitchChangeListener(this);
}
mSwitch.setChecked(enabled);
mSwitchBar.setSwitchChecked(enabled);
if (mValidListener) {
mSwitchBar.addOnSwitchChangeListener(this);
}

View File

@@ -33,7 +33,6 @@ public class AndroidBeam extends Fragment
private View mView;
private NfcAdapter mNfcAdapter;
private SwitchBar mSwitchBar;
private Switch mSwitch;
private CharSequence mOldActivityTitle;
@Override
@@ -63,8 +62,7 @@ public class AndroidBeam extends Fragment
SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar();
mSwitch = mSwitchBar.getSwitch();
mSwitch.setChecked(mNfcAdapter.isNdefPushEnabled());
mSwitchBar.setSwitchChecked(mNfcAdapter.isNdefPushEnabled());
}
@Override
@@ -94,15 +92,15 @@ public class AndroidBeam extends Fragment
@Override
public void onSwitchChanged(Switch switchView, boolean desiredState) {
boolean success = false;
mSwitch.setEnabled(false);
mSwitchBar.setSwitchEnabled(false);
if (desiredState) {
success = mNfcAdapter.enableNdefPush();
} else {
success = mNfcAdapter.disableNdefPush();
}
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 SwitchBar mSwitchBar;
private Switch mSwitch;
private Context mContext;
private PackageManager mPM;
private ZenModeConfig mConfig;
@@ -155,7 +154,6 @@ public class ZenModeSettings extends SettingsPreferenceFragment implements Index
if (DEBUG) Log.d(TAG, "Loaded mConfig=" + mConfig);
mSwitchBar = ((SettingsActivity) mContext).getSwitchBar();
mSwitch = mSwitchBar.getSwitch();
final PreferenceCategory general = (PreferenceCategory) root.findPreference(KEY_GENERAL);
@@ -384,8 +382,8 @@ public class ZenModeSettings extends SettingsPreferenceFragment implements Index
private void updateZenMode() {
final boolean zenMode = Global.getInt(getContentResolver(),
Global.ZEN_MODE, Global.ZEN_MODE_OFF) != Global.ZEN_MODE_OFF;
if (mSwitch.isChecked() != zenMode) {
mSwitch.setChecked(zenMode);
if (mSwitchBar.isSwitchChecked() != zenMode) {
mSwitchBar.setSwitchChecked(zenMode);
mIgnoreNext = true;
}
}

View File

@@ -112,7 +112,6 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
};
private SwitchBar mSwitchBar;
private ToggleSwitch mToggleSwitch;
private String mPreferenceKey;
@@ -209,13 +208,13 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
switch (which) {
case DialogInterface.BUTTON_POSITIVE:
checked = true;
mToggleSwitch.setCheckedInternal(checked);
mSwitchBar.setSwitchChecked(checked);
getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked);
break;
case DialogInterface.BUTTON_NEGATIVE:
checked = false;
mToggleSwitch.setCheckedInternal(checked);
mSwitchBar.setSwitchChecked(checked);
getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, checked);
onPreferenceToggled(mPreferenceKey, checked);
break;
@@ -228,7 +227,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
ListView listView = getListView();
ViewGroup contentRoot = (ViewGroup) listView.getParent();
View emptyView = listView.getEmptyView();
if (!mToggleSwitch.isChecked()) {
if (!mSwitchBar.isSwitchChecked()) {
if (emptyView != null && emptyView.getId() != R.id.empty_print_state) {
contentRoot.removeView(emptyView);
emptyView = null;
@@ -277,10 +276,10 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
List<ComponentName> services = PrintSettingsUtils.readEnabledPrintServices(getActivity());
mServiceEnabled = services.contains(mComponentName);
if (mServiceEnabled) {
mToggleSwitch.setCheckedInternal(true);
mSwitchBar.setSwitchChecked(true);
mPrintersAdapter.enable();
} else {
mToggleSwitch.setCheckedInternal(false);
mSwitchBar.setSwitchChecked(false);
mPrintersAdapter.disable();
}
getActivity().invalidateOptionsMenu();
@@ -293,14 +292,12 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
final SettingsActivity activity = (SettingsActivity) getActivity();
mSwitchBar = activity.getSwitchBar();
mToggleSwitch = mSwitchBar.getSwitch();
mToggleSwitch.setOnBeforeCheckedChangeListener(new ToggleSwitch.OnBeforeCheckedChangeListener() {
mSwitchBar.setSwitchOnBeforeCheckedChangeListener(new ToggleSwitch.OnBeforeCheckedChangeListener() {
@Override
public boolean onBeforeCheckedChanged(ToggleSwitch toggleSwitch, boolean checked) {
if (checked) {
if (!TextUtils.isEmpty(mEnableWarningMessage)) {
toggleSwitch.setCheckedInternal(false);
mSwitchBar.setSwitchChecked(false);
getArguments().putBoolean(PrintSettingsFragment.EXTRA_CHECKED, false);
showDialog(DIALOG_ID_ENABLE_WARNING);
return true;
@@ -331,7 +328,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment
// Enabled.
final boolean enabled = arguments.getBoolean(PrintSettingsFragment.EXTRA_CHECKED);
mToggleSwitch.setCheckedInternal(enabled);
mSwitchBar.setSwitchChecked(enabled);
// Settings title and intent.
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
setVisibility(View.GONE);
}
public ToggleSwitch getSwitch() {
return mSwitch;
mSwitch.setVisibility(View.GONE);
}
public void show() {
@@ -125,4 +122,39 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC
}
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;
}
public OnBeforeCheckedChangeListener getOnBeforeCheckedChangeListener() {
return mOnBeforeListener;
}
@Override
public void setChecked(boolean checked) {
if (mOnBeforeListener != null

View File

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