summaryrefslogtreecommitdiff
path: root/library/gingerbread/src/com/android/setupwizardlib/items/ExpandableSwitchItem.java
diff options
context:
space:
mode:
Diffstat (limited to 'library/gingerbread/src/com/android/setupwizardlib/items/ExpandableSwitchItem.java')
-rw-r--r--library/gingerbread/src/com/android/setupwizardlib/items/ExpandableSwitchItem.java239
1 files changed, 114 insertions, 125 deletions
diff --git a/library/gingerbread/src/com/android/setupwizardlib/items/ExpandableSwitchItem.java b/library/gingerbread/src/com/android/setupwizardlib/items/ExpandableSwitchItem.java
index 71d1bb6..4b9347f 100644
--- a/library/gingerbread/src/com/android/setupwizardlib/items/ExpandableSwitchItem.java
+++ b/library/gingerbread/src/com/android/setupwizardlib/items/ExpandableSwitchItem.java
@@ -28,7 +28,6 @@ import android.view.View;
import android.view.View.OnClickListener;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TextView;
-
import com.android.setupwizardlib.R;
import com.android.setupwizardlib.view.CheckableLinearLayout;
@@ -37,140 +36,130 @@ import com.android.setupwizardlib.view.CheckableLinearLayout;
* summary, and when that is clicked, will expand to show a longer summary. The end (right for LTR)
* side is a switch which can be toggled by the user.
*
- * Note: It is highly recommended to use this item with recycler view rather than list view, because
- * list view draws the touch ripple effect on top of the item, rather than letting the item handle
- * it. Therefore you might see a double-ripple, one for the expandable area and one for the entire
- * list item, when using this in list view.
+ * <p>Note: It is highly recommended to use this item with recycler view rather than list view,
+ * because list view draws the touch ripple effect on top of the item, rather than letting the item
+ * handle it. Therefore you might see a double-ripple, one for the expandable area and one for the
+ * entire list item, when using this in list view.
*/
public class ExpandableSwitchItem extends SwitchItem
- implements OnCheckedChangeListener, OnClickListener {
-
- private CharSequence mCollapsedSummary;
- private CharSequence mExpandedSummary;
- private boolean mIsExpanded = false;
-
- public ExpandableSwitchItem() {
- super();
- }
-
- public ExpandableSwitchItem(Context context, AttributeSet attrs) {
- super(context, attrs);
- final TypedArray a =
- context.obtainStyledAttributes(attrs, R.styleable.SuwExpandableSwitchItem);
- mCollapsedSummary = a.getText(R.styleable.SuwExpandableSwitchItem_suwCollapsedSummary);
- mExpandedSummary = a.getText(R.styleable.SuwExpandableSwitchItem_suwExpandedSummary);
- a.recycle();
- }
-
- @Override
- protected int getDefaultLayoutResource() {
- return R.layout.suw_items_expandable_switch;
+ implements OnCheckedChangeListener, OnClickListener {
+
+ private CharSequence collapsedSummary;
+ private CharSequence expandedSummary;
+ private boolean isExpanded = false;
+
+ public ExpandableSwitchItem() {
+ super();
+ }
+
+ public ExpandableSwitchItem(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SuwExpandableSwitchItem);
+ collapsedSummary = a.getText(R.styleable.SuwExpandableSwitchItem_suwCollapsedSummary);
+ expandedSummary = a.getText(R.styleable.SuwExpandableSwitchItem_suwExpandedSummary);
+ a.recycle();
+ }
+
+ @Override
+ protected int getDefaultLayoutResource() {
+ return R.layout.suw_items_expandable_switch;
+ }
+
+ @Override
+ public CharSequence getSummary() {
+ return isExpanded ? getExpandedSummary() : getCollapsedSummary();
+ }
+
+ /** @return True if the item is currently expanded. */
+ public boolean isExpanded() {
+ return isExpanded;
+ }
+
+ /** Sets whether the item should be expanded. */
+ public void setExpanded(boolean expanded) {
+ if (isExpanded == expanded) {
+ return;
}
-
- @Override
- public CharSequence getSummary() {
- return mIsExpanded ? getExpandedSummary() : getCollapsedSummary();
+ isExpanded = expanded;
+ notifyItemChanged();
+ }
+
+ /** @return The summary shown when in collapsed state. */
+ public CharSequence getCollapsedSummary() {
+ return collapsedSummary;
+ }
+
+ /**
+ * Sets the summary text shown when the item is collapsed. Corresponds to the {@code
+ * app:suwCollapsedSummary} XML attribute.
+ */
+ public void setCollapsedSummary(CharSequence collapsedSummary) {
+ this.collapsedSummary = collapsedSummary;
+ if (!isExpanded()) {
+ notifyChanged();
}
-
- /**
- * @return True if the item is currently expanded.
- */
- public boolean isExpanded() {
- return mIsExpanded;
+ }
+
+ /** @return The summary shown when in expanded state. */
+ public CharSequence getExpandedSummary() {
+ return expandedSummary;
+ }
+
+ /**
+ * Sets the summary text shown when the item is expanded. Corresponds to the {@code
+ * app:suwExpandedSummary} XML attribute.
+ */
+ public void setExpandedSummary(CharSequence expandedSummary) {
+ this.expandedSummary = expandedSummary;
+ if (isExpanded()) {
+ notifyChanged();
}
+ }
- /**
- * Sets whether the item should be expanded.
- */
- public void setExpanded(boolean expanded) {
- if (mIsExpanded == expanded) {
- return;
- }
- mIsExpanded = expanded;
- notifyItemChanged();
- }
+ @Override
+ public void onBindView(View view) {
+ // TODO: If it is possible to detect, log a warning if this is being used with ListView.
+ super.onBindView(view);
+ View content = view.findViewById(R.id.suw_items_expandable_switch_content);
+ content.setOnClickListener(this);
- /**
- * @return The summary shown when in collapsed state.
- */
- public CharSequence getCollapsedSummary() {
- return mCollapsedSummary;
+ if (content instanceof CheckableLinearLayout) {
+ ((CheckableLinearLayout) content).setChecked(isExpanded());
}
- /**
- * Sets the summary text shown when the item is collapsed. Corresponds to the
- * {@code app:suwCollapsedSummary} XML attribute.
- */
- public void setCollapsedSummary(CharSequence collapsedSummary) {
- mCollapsedSummary = collapsedSummary;
- if (!isExpanded()) {
- notifyChanged();
+ tintCompoundDrawables(view);
+
+ // Expandable switch item has focusability on the expandable layout on the left, and the
+ // switch on the right, but not the item itself.
+ view.setFocusable(false);
+ }
+
+ @Override
+ public void onClick(View v) {
+ setExpanded(!isExpanded());
+ }
+
+ // Tint the expand arrow with the text color
+ private void tintCompoundDrawables(View view) {
+ final TypedArray a =
+ view.getContext().obtainStyledAttributes(new int[] {android.R.attr.textColorPrimary});
+ final ColorStateList tintColor = a.getColorStateList(0);
+ a.recycle();
+
+ if (tintColor != null) {
+ TextView titleView = (TextView) view.findViewById(R.id.suw_items_title);
+ for (Drawable drawable : titleView.getCompoundDrawables()) {
+ if (drawable != null) {
+ drawable.setColorFilter(tintColor.getDefaultColor(), Mode.SRC_IN);
}
- }
-
- /**
- * @return The summary shown when in expanded state.
- */
- public CharSequence getExpandedSummary() {
- return mExpandedSummary;
- }
-
- /**
- * Sets the summary text shown when the item is expanded. Corresponds to the
- * {@code app:suwExpandedSummary} XML attribute.
- */
- public void setExpandedSummary(CharSequence expandedSummary) {
- mExpandedSummary = expandedSummary;
- if (isExpanded()) {
- notifyChanged();
- }
- }
-
- @Override
- public void onBindView(View view) {
- // TODO: If it is possible to detect, log a warning if this is being used with ListView.
- super.onBindView(view);
- View content = view.findViewById(R.id.suw_items_expandable_switch_content);
- content.setOnClickListener(this);
-
- if (content instanceof CheckableLinearLayout) {
- ((CheckableLinearLayout) content).setChecked(isExpanded());
- }
-
- tintCompoundDrawables(view);
-
- // Expandable switch item has focusability on the expandable layout on the left, and the
- // switch on the right, but not the item itself.
- view.setFocusable(false);
- }
-
- @Override
- public void onClick(View v) {
- setExpanded(!isExpanded());
- }
-
- // Tint the expand arrow with the text color
- private void tintCompoundDrawables(View view) {
- final TypedArray a = view.getContext()
- .obtainStyledAttributes(new int[] {android.R.attr.textColorPrimary});
- final ColorStateList tintColor = a.getColorStateList(0);
- a.recycle();
-
- if (tintColor != null) {
- TextView titleView = (TextView) view.findViewById(R.id.suw_items_title);
- for (Drawable drawable : titleView.getCompoundDrawables()) {
- if (drawable != null) {
- drawable.setColorFilter(tintColor.getDefaultColor(), Mode.SRC_IN);
- }
- }
- if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
- for (Drawable drawable : titleView.getCompoundDrawablesRelative()) {
- if (drawable != null) {
- drawable.setColorFilter(tintColor.getDefaultColor(), Mode.SRC_IN);
- }
- }
- }
-
+ }
+ if (VERSION.SDK_INT >= VERSION_CODES.JELLY_BEAN_MR1) {
+ for (Drawable drawable : titleView.getCompoundDrawablesRelative()) {
+ if (drawable != null) {
+ drawable.setColorFilter(tintColor.getDefaultColor(), Mode.SRC_IN);
+ }
}
+ }
}
+ }
}