package studio.uphie.one.widgets;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.view.Gravity;
import android.widget.RadioButton;

import studio.uphie.one.R;

public class Tab extends RadioButton {
    /**
     * 选择的背景资源id
     */
    private int selectedBackground;
    /**
     * 未选择的背景资源id
     */
    private int unselectedBackground;
    /**
     * 选择的文字颜色资源id
     */
    private int selectedTextColor;
    /**
     * 未选择的文字颜色资源id
     */
    private int unselectedTextColor;

    public Tab(Context context, AttributeSet attrs) {
        super(context, attrs);

        TypedArray array = context.obtainStyledAttributes(attrs,
                R.styleable.Tab);

        selectedBackground = array.getResourceId(R.styleable.Tab_checkedBackground, -1);
        unselectedBackground = array.getResourceId(R.styleable.Tab_uncheckedBackground, -1);

        selectedTextColor = array.getResourceId(R.styleable.Tab_checkedTextColor, android.R.color.holo_blue_light);
        unselectedTextColor = array.getResourceId(R.styleable.Tab_uncheckedTextColor, android.R.color.black);

        array.recycle();

        setButtonDrawable(getResources().getDrawable(android.R.color.transparent));
        setGravity(Gravity.CENTER_HORIZONTAL);
        setCompoundDrawablePadding(10);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        if (isChecked()) {
            setTextColor(getResources().getColor(selectedTextColor));
            if (selectedBackground > 0) {
                Drawable selectedDrawable = getResources().getDrawable(selectedBackground);
                setCompoundDrawablesWithIntrinsicBounds(null, selectedDrawable, null, null);
            } else {
                setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
            }
        } else {
            setTextColor(getResources().getColor(unselectedTextColor));
            if (unselectedBackground > 0) {
                Drawable unselectedDrawable = getResources().getDrawable(unselectedBackground);
                setCompoundDrawablesWithIntrinsicBounds(null, unselectedDrawable, null, null);
            } else {
                setCompoundDrawablesWithIntrinsicBounds(null, null, null, null);
            }
        }
        super.onDraw(canvas);
    }
}
