package com.afollestad.materialdialogs.simplelist;
import android.content.Context;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.support.annotation.AttrRes;
import android.support.annotation.ColorInt;
import android.support.annotation.ColorRes;
import android.support.annotation.DimenRes;
import android.support.annotation.DrawableRes;
import android.support.annotation.IntRange;
import android.support.annotation.Nullable;
import android.support.annotation.StringRes;
import android.support.v4.content.ContextCompat;
import android.util.TypedValue;
import com.afollestad.materialdialogs.util.DialogUtils;
/** @author Aidan Follestad (afollestad) */
public class MaterialSimpleListItem {
private final Builder builder;
private MaterialSimpleListItem(Builder builder) {
this.builder = builder;
}
public Drawable getIcon() {
return builder.icon;
}
public CharSequence getContent() {
return builder.content;
}
public int getIconPadding() {
return builder.iconPadding;
}
@ColorInt
public int getBackgroundColor() {
return builder.backgroundColor;
}
public long getId() {
return builder.id;
}
@Nullable
public Object getTag() {
return builder.tag;
}
@Override
public String toString() {
if (getContent() != null) {
return getContent().toString();
} else {
return "(no content)";
}
}
public static class Builder {
private final Context context;
protected Drawable icon;
protected CharSequence content;
protected long id;
int iconPadding;
int backgroundColor;
Object tag;
public Builder(Context context) {
this.context = context;
backgroundColor = Color.parseColor("#BCBCBC");
}
public Builder icon(Drawable icon) {
this.icon = icon;
return this;
}
public Builder icon(@DrawableRes int iconRes) {
return icon(ContextCompat.getDrawable(context, iconRes));
}
public Builder iconPadding(@IntRange(from = 0, to = Integer.MAX_VALUE) int padding) {
this.iconPadding = padding;
return this;
}
public Builder iconPaddingDp(@IntRange(from = 0, to = Integer.MAX_VALUE) int paddingDp) {
this.iconPadding =
(int)
TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_DIP,
paddingDp,
context.getResources().getDisplayMetrics());
return this;
}
public Builder iconPaddingRes(@DimenRes int paddingRes) {
return iconPadding(context.getResources().getDimensionPixelSize(paddingRes));
}
public Builder content(CharSequence content) {
this.content = content;
return this;
}
public Builder content(@StringRes int contentRes) {
return content(context.getString(contentRes));
}
public Builder backgroundColor(@ColorInt int color) {
this.backgroundColor = color;
return this;
}
public Builder backgroundColorRes(@ColorRes int colorRes) {
return backgroundColor(DialogUtils.getColor(context, colorRes));
}
public Builder backgroundColorAttr(@AttrRes int colorAttr) {
return backgroundColor(DialogUtils.resolveColor(context, colorAttr));
}
public Builder id(long id) {
this.id = id;
return this;
}
public Builder tag(@Nullable Object tag) {
this.tag = tag;
return this;
}
public MaterialSimpleListItem build() {
return new MaterialSimpleListItem(this);
}
}
}