OSDN Git Service

Fix bug #15170508 When I initially load settings, all on/off toggles start in off...
authorFabrice Di Meglio <fdimeglio@google.com>
Tue, 27 May 2014 23:43:40 +0000 (16:43 -0700)
committerFabrice Di Meglio <fdimeglio@google.com>
Wed, 28 May 2014 00:01:10 +0000 (17:01 -0700)
- 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

17 files changed:
src/com/android/settings/DevelopmentSettings.java
src/com/android/settings/DreamSettings.java
src/com/android/settings/accessibility/CaptionPropertiesFragment.java
src/com/android/settings/accessibility/ToggleAccessibilityServicePreferenceFragment.java
src/com/android/settings/accessibility/ToggleDaltonizerPreferenceFragment.java
src/com/android/settings/accessibility/ToggleFeaturePreferenceFragment.java
src/com/android/settings/accessibility/ToggleGlobalGesturePreferenceFragment.java
src/com/android/settings/accessibility/ToggleInversionPreferenceFragment.java
src/com/android/settings/accessibility/ToggleScreenMagnificationPreferenceFragment.java
src/com/android/settings/bluetooth/BluetoothEnabler.java
src/com/android/settings/location/LocationSettings.java
src/com/android/settings/nfc/AndroidBeam.java
src/com/android/settings/notification/ZenModeSettings.java
src/com/android/settings/print/PrintServiceSettingsFragment.java
src/com/android/settings/widget/SwitchBar.java
src/com/android/settings/widget/ToggleSwitch.java
src/com/android/settings/wifi/WifiEnabler.java

index 1cd08f3..94d8a36 100644 (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;
         }
index 1175639..d97e616 100644 (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) {
index 5dcf121..937f3b7 100644 (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() {
index a446f49..d18c7f3 100644 (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);
                 }
index b910f79..a39c5d8 100644 (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);
     }
index 331c0e3..cc81289 100644 (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.
index 782e7a5..d815e50 100644 (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;
index b6d5569..594ed22 100644 (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);
     }
index 8202a2a..7c01d0e 100644 (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;
index be03b63..4626ed4 100644 (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);
     }
 }
index 8794a8d..6eabf36 100644 (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);
             }
index eb3ff9b..b63a975 100644 (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);
     }
 }
index e69fe95..6482feb 100644 (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;
         }
     }
index f104a06..c1ebcb9 100644 (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);
index 40c8481..1675f2a 100644 (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();
+    }
 }
index 8232ff1..ab0c37e 100644 (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
index 9f0b6fa..1e86761 100644 (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();
         }
     }