aboutsummaryrefslogtreecommitdiff
path: root/setupwizardlib/src/main/java/com/android/setupwizardlib/items/Item.java
diff options
context:
space:
mode:
Diffstat (limited to 'setupwizardlib/src/main/java/com/android/setupwizardlib/items/Item.java')
-rw-r--r--setupwizardlib/src/main/java/com/android/setupwizardlib/items/Item.java154
1 files changed, 154 insertions, 0 deletions
diff --git a/setupwizardlib/src/main/java/com/android/setupwizardlib/items/Item.java b/setupwizardlib/src/main/java/com/android/setupwizardlib/items/Item.java
new file mode 100644
index 0000000..796d533
--- /dev/null
+++ b/setupwizardlib/src/main/java/com/android/setupwizardlib/items/Item.java
@@ -0,0 +1,154 @@
+/*
+ * Copyright (C) 2015 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.setupwizardlib.items;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.drawable.Drawable;
+import android.util.AttributeSet;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.setupwizardlib.R;
+
+/**
+ * Definition of an item in SetupWizardItemsLayout. An item is usually defined in XML and inflated
+ * using {@link ItemInflater}.
+ */
+public class Item extends AbstractItem {
+
+ private boolean mEnabled = true;
+ private Drawable mIcon;
+ private int mLayoutRes;
+ private CharSequence mSummary;
+ private CharSequence mTitle;
+ private boolean mVisible = true;
+
+ public Item() {
+ super();
+ mLayoutRes = getDefaultLayoutResource();
+ }
+
+ public Item(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SuwItem);
+ mEnabled = a.getBoolean(R.styleable.SuwItem_android_enabled, true);
+ mIcon = a.getDrawable(R.styleable.SuwItem_android_icon);
+ mTitle = a.getText(R.styleable.SuwItem_android_title);
+ mSummary = a.getText(R.styleable.SuwItem_android_summary);
+ mLayoutRes = a.getResourceId(R.styleable.SuwItem_android_layout,
+ getDefaultLayoutResource());
+ mVisible = a.getBoolean(R.styleable.SuwItem_android_visible, true);
+ a.recycle();
+ }
+
+ protected int getDefaultLayoutResource() {
+ return R.layout.suw_items_default;
+ }
+
+ public void setEnabled(boolean enabled) {
+ mEnabled = enabled;
+ }
+
+ @Override
+ public int getCount() {
+ return isVisible() ? 1 : 0;
+ }
+
+ @Override
+ public boolean isEnabled() {
+ return mEnabled;
+ }
+
+ public void setIcon(Drawable icon) {
+ mIcon = icon;
+ }
+
+ public Drawable getIcon() {
+ return mIcon;
+ }
+
+ public void setLayoutResource(int layoutResource) {
+ mLayoutRes = layoutResource;
+ }
+
+ @Override
+ public int getLayoutResource() {
+ return mLayoutRes;
+ }
+
+ public void setSummary(CharSequence summary) {
+ mSummary = summary;
+ }
+
+ public CharSequence getSummary() {
+ return mSummary;
+ }
+
+ public void setTitle(CharSequence title) {
+ mTitle = title;
+ }
+
+ public CharSequence getTitle() {
+ return mTitle;
+ }
+
+ public void setVisible(boolean visible) {
+ mVisible = visible;
+ }
+
+ public boolean isVisible() {
+ return mVisible;
+ }
+
+ public int getViewId() {
+ return getId();
+ }
+
+ @Override
+ public void onBindView(View view) {
+ TextView label = (TextView) view.findViewById(R.id.suw_items_title);
+ label.setText(getTitle());
+
+ TextView summaryView = (TextView) view.findViewById(R.id.suw_items_summary);
+ CharSequence summary = getSummary();
+ if (summary != null && summary.length() > 0) {
+ summaryView.setText(summary);
+ summaryView.setVisibility(View.VISIBLE);
+ } else {
+ summaryView.setVisibility(View.GONE);
+ }
+
+ final View iconContainer = view.findViewById(R.id.suw_items_icon_container);
+ final Drawable icon = getIcon();
+ if (icon != null) {
+ final ImageView iconView = (ImageView) view.findViewById(R.id.suw_items_icon);
+ // Set the image drawable to null before setting the state and level to avoid affecting
+ // any recycled drawable in the ImageView
+ iconView.setImageDrawable(null);
+ iconView.setImageState(icon.getState(), false /* merge */);
+ iconView.setImageLevel(icon.getLevel());
+ iconView.setImageDrawable(icon);
+ iconContainer.setVisibility(View.VISIBLE);
+ } else {
+ iconContainer.setVisibility(View.GONE);
+ }
+
+ view.setId(getViewId());
+ }
+}