package com.tencent.tws.assistant.utils;

import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.drawable.Drawable;

import com.tencent.tws.sharelib.R;
import com.tencent.tws.assistant.drawable.TwsRippleDrawable;

public class TwsRippleUtils {

    public static int RIPPLE_STYLE_NORMAL = TwsRippleDrawable.RIPPLE_STYLE_NORMAL;
    public static int RIPPLE_STYLE_CLEAR = TwsRippleDrawable.RIPPLE_STYLE_CLEAR;

    public static TwsRippleDrawable getDefaultDrawable(Context context) {
        return getClearDrawable(context);
    }

    public static TwsRippleDrawable getNormalDrawable(Context context) {
        ColorStateList colors = context.getResources().getColorStateList(R.color.default_ripple_light);
        return getCustomDrawable(context, colors, null, null);
    }

    public static TwsRippleDrawable getClearDrawable(Context context) {
        return getCustomColorClearDrawable(context, R.color.default_ripple_light);
    }

    public static TwsRippleDrawable getDefaultDarkDrawable(Context context) {
        return getCustomColorClearDrawable(context, R.color.default_ripple_dark);
    }

    public static TwsRippleDrawable getCustomColorClearDrawable(Context context, int color) {
        ColorStateList colors = context.getResources().getColorStateList(color);
        return getCustomDrawable(context, colors, null, null, RIPPLE_STYLE_CLEAR);
    }

    public static TwsRippleDrawable getDefaultListSelector(Context context) {
        ColorStateList colors = context.getResources().getColorStateList(R.color.list_item_ripple_light);
        Drawable mask = context.getResources().getDrawable(R.color.tws_white);
        return getCustomDrawable(context, colors, null, mask);
    }

    public static TwsRippleDrawable getDefaultListDarkSelector(Context context) {
        ColorStateList colors = context.getResources().getColorStateList(R.color.list_item_ripple_dark);
        Drawable mask = context.getResources().getDrawable(R.color.tws_white);
        return getCustomDrawable(context, colors, null, mask);
    }

    public static TwsRippleDrawable getHasContentDrawable(Context context, int contentId) {
        ColorStateList colors = context.getResources().getColorStateList(R.color.default_ripple_light);
        Drawable content = null;
        if (contentId > 0) {
            content = context.getResources().getDrawable(contentId);
        }
        return getCustomDrawable(context, colors, content, null);
    }

    public static TwsRippleDrawable getHasContentDrawable(Context context, Drawable content) {
        ColorStateList colors = context.getResources().getColorStateList(R.color.default_ripple_light);
        return getCustomDrawable(context, colors, content, null);
    }

    public static TwsRippleDrawable getHasMaskDrawable(Context context, int maskId) {
        ColorStateList colors = context.getResources().getColorStateList(R.color.list_item_ripple_light);
        Drawable mask = null;
        if (maskId > 0) {
            mask = context.getResources().getDrawable(maskId);
        }
        return getCustomDrawable(context, colors, null, mask);
    }

    public static TwsRippleDrawable getHasMaskDrawable(Context context, Drawable mask) {
        ColorStateList colors = context.getResources().getColorStateList(R.color.list_item_ripple_light);
        return getCustomDrawable(context, colors, null, mask);
    }

    public static TwsRippleDrawable getCustomDrawable(Context context, int rippleColorId, int contentId,
            int maskId) {
        return getCustomDrawable(context, rippleColorId, contentId, maskId, RIPPLE_STYLE_NORMAL);
    }

    public static TwsRippleDrawable getCustomDrawable(Context context, int rippleColorId, int contentId,
            int maskId, int rippleStyle) {
        ColorStateList rippleColor = context.getResources().getColorStateList(rippleColorId);
        Drawable content = null;
        if (contentId > 0) {
            content = context.getResources().getDrawable(contentId);
        }
        Drawable mask = null;
        if (maskId > 0) {
            mask = context.getResources().getDrawable(maskId);
        }
        return getCustomDrawable(context, rippleColor, content, mask, rippleStyle);
    }

    public static TwsRippleDrawable getCustomDrawable(Context context, ColorStateList rippleColor,
            Drawable content, Drawable mask) {
        return getCustomDrawable(context, rippleColor, content, mask, RIPPLE_STYLE_NORMAL);
    }

    public static TwsRippleDrawable getCustomDrawable(Context context, ColorStateList rippleColor,
            Drawable content, Drawable mask, int rippleStyle) {
        ColorStateList defaultColor = context.getResources().getColorStateList(R.color.default_ripple_light);
        if (rippleColor == null) {
            rippleColor = defaultColor;
        }
        return new TwsRippleDrawable(rippleColor, content, mask, rippleStyle);
    }
}
