diff options
author | Fabrice Di Meglio <fdimeglio@google.com> | 2014-06-12 15:46:41 -0700 |
---|---|---|
committer | Fabrice Di Meglio <fdimeglio@google.com> | 2014-06-12 15:46:41 -0700 |
commit | 204521626f63bef4a8ac2d76334b94dbb0f3aa3b (patch) | |
tree | c3e6b3dc0d76ba02cdec23a8ce57d8f6e6a1cba0 /src/com/android/settings/widget | |
parent | 524a63b493c2c9692dd09669173c96e69e09297c (diff) | |
parent | f9360dbcef1ac3355036724a74e9ca29e6475b37 (diff) | |
download | packages_apps_Settings-204521626f63bef4a8ac2d76334b94dbb0f3aa3b.zip packages_apps_Settings-204521626f63bef4a8ac2d76334b94dbb0f3aa3b.tar.gz packages_apps_Settings-204521626f63bef4a8ac2d76334b94dbb0f3aa3b.tar.bz2 |
resolved conflicts for merge of f9360dbc to master
Change-Id: I2e468d83a7ce5200c59f63b4362e7bee10d0a2eb
Diffstat (limited to 'src/com/android/settings/widget')
-rw-r--r-- | src/com/android/settings/widget/SwitchBar.java | 104 |
1 files changed, 96 insertions, 8 deletions
diff --git a/src/com/android/settings/widget/SwitchBar.java b/src/com/android/settings/widget/SwitchBar.java index bc06d87..b503cf6 100644 --- a/src/com/android/settings/widget/SwitchBar.java +++ b/src/com/android/settings/widget/SwitchBar.java @@ -17,10 +17,11 @@ package com.android.settings.widget; import android.content.Context; +import android.os.Parcel; +import android.os.Parcelable; import android.transition.TransitionManager; import android.util.AttributeSet; import android.view.LayoutInflater; -import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.CompoundButton; @@ -72,12 +73,11 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC mTextView.setText(R.string.switch_off_text); mSwitch = (ToggleSwitch) findViewById(R.id.switch_widget); - mSwitch.setOnCheckedChangeListener(this); addOnSwitchChangeListener(new OnSwitchChangeListener() { @Override public void onSwitchChanged(Switch switchView, boolean isChecked) { - mTextView.setText(isChecked ? R.string.switch_on_text : R.string.switch_off_text); + setTextViewLabel(isChecked); } }); @@ -90,18 +90,41 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC setVisibility(View.GONE); } - public ToggleSwitch getSwitch() { + public void setTextViewLabel(boolean isChecked) { + mTextView.setText(isChecked ? R.string.switch_on_text : R.string.switch_off_text); + } + + public void setChecked(boolean checked) { + setTextViewLabel(checked); + mSwitch.setChecked(checked); + } + + public boolean isChecked() { + return mSwitch.isChecked(); + } + + public void setEnabled(boolean enabled) { + super.setEnabled(enabled); + mTextView.setEnabled(enabled); + mSwitch.setEnabled(false); + } + + public final ToggleSwitch getSwitch() { return mSwitch; } public void show() { - TransitionManager.beginDelayedTransition((ViewGroup) getParent()); - setVisibility(View.VISIBLE); + if (!isShowing()) { + setVisibility(View.VISIBLE); + mSwitch.setOnCheckedChangeListener(this); + } } public void hide() { - TransitionManager.beginDelayedTransition((ViewGroup) getParent()); - setVisibility(View.GONE); + if (isShowing()) { + setVisibility(View.GONE); + mSwitch.setOnCheckedChangeListener(null); + } } public boolean isShowing() { @@ -139,4 +162,69 @@ public class SwitchBar extends LinearLayout implements CompoundButton.OnCheckedC } mSwitchChangeListeners.remove(listener); } + + static class SavedState extends BaseSavedState { + boolean checked; + boolean visible; + + SavedState(Parcelable superState) { + super(superState); + } + + /** + * Constructor called from {@link #CREATOR} + */ + private SavedState(Parcel in) { + super(in); + checked = (Boolean)in.readValue(null); + visible = (Boolean)in.readValue(null); + } + + @Override + public void writeToParcel(Parcel out, int flags) { + super.writeToParcel(out, flags); + out.writeValue(checked); + out.writeValue(visible); + } + + @Override + public String toString() { + return "SwitchBar.SavedState{" + + Integer.toHexString(System.identityHashCode(this)) + + " checked=" + checked + + " visible=" + visible + "}"; + } + + public static final Parcelable.Creator<SavedState> CREATOR + = new Parcelable.Creator<SavedState>() { + public SavedState createFromParcel(Parcel in) { + return new SavedState(in); + } + + public SavedState[] newArray(int size) { + return new SavedState[size]; + } + }; + } + + @Override + public Parcelable onSaveInstanceState() { + Parcelable superState = super.onSaveInstanceState(); + + SavedState ss = new SavedState(superState); + ss.checked = mSwitch.isChecked(); + ss.visible = isShowing(); + return ss; + } + + @Override + public void onRestoreInstanceState(Parcelable state) { + SavedState ss = (SavedState) state; + + super.onRestoreInstanceState(ss.getSuperState()); + mSwitch.setChecked(ss.checked); + setTextViewLabel(ss.checked); + setVisibility(ss.visible ? View.VISIBLE : View.GONE); + requestLayout(); + } } |