package com.boardgamegeek.ui.widget;
import android.content.Context;
import android.content.res.TypedArray;
import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
import android.support.v7.graphics.Palette;
import android.support.v7.widget.CardView;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;
import com.boardgamegeek.R;
import butterknife.BindView;
import butterknife.ButterKnife;
public class TextEditorCard extends CardView {
@BindView(R.id.text_editor_header) TextView headerView;
@BindView(R.id.text_editor_content) TextView contentView;
@BindView(R.id.text_editor_timestamp) TimestampView timestampView;
boolean isInEditMode;
public TextEditorCard(Context context) {
super(context);
init(null);
}
public TextEditorCard(Context context, AttributeSet attrs) {
super(context, attrs);
init(attrs);
}
private void init(AttributeSet attrs) {
LayoutInflater.from(getContext()).inflate(R.layout.widget_text_editor_card, this, true);
ButterKnife.bind(this);
setVisibility(View.GONE);
if (attrs != null) {
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.TextEditorCard);
try {
String title = a.getString(R.styleable.TextEditorCard_headerText);
headerView.setText(title);
} finally {
a.recycle();
}
}
}
public void setContentText(CharSequence text) {
contentView.setText(text);
contentView.setVisibility(TextUtils.isEmpty(text) ? View.GONE : View.VISIBLE);
setEditMode();
}
public void setTimestamp(long timestamp) {
timestampView.setTimestamp(timestamp);
}
public String getContentText() {
return contentView.getText().toString();
}
public String getHeaderText() {
return headerView.getText().toString();
}
public void setHeaderColor(@ColorInt int color) {
headerView.setTextColor(color);
}
public void enableEditMode(boolean enable) {
isInEditMode = enable;
setEditMode();
}
public static final ButterKnife.Setter<TextEditorCard, Palette.Swatch> headerColorSetter =
new ButterKnife.Setter<TextEditorCard, Palette.Swatch>() {
@Override
public void set(@NonNull TextEditorCard view, Palette.Swatch value, int index) {
if (value != null) {
view.setHeaderColor(value.getRgb());
}
}
};
private void setEditMode() {
if (isInEditMode) {
setVisibility(View.VISIBLE);
setClickable(true);
} else {
setVisibility(TextUtils.isEmpty(contentView.getText()) ? View.GONE : View.VISIBLE);
setClickable(false);
}
}
}