summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/widget
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2014-06-12 15:46:41 -0700
committerFabrice Di Meglio <fdimeglio@google.com>2014-06-12 15:46:41 -0700
commit204521626f63bef4a8ac2d76334b94dbb0f3aa3b (patch)
treec3e6b3dc0d76ba02cdec23a8ce57d8f6e6a1cba0 /src/com/android/settings/widget
parent524a63b493c2c9692dd09669173c96e69e09297c (diff)
parentf9360dbcef1ac3355036724a74e9ca29e6475b37 (diff)
downloadpackages_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.java104
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();
+ }
}