/FileExtraction/Java_unseen/PowerExplorer_PowerFileExplorer/PowerFileExplorer/src/main/java/com/amaze/filemanager/ui/views/CircleGradientDrawable.java
package com.amaze.filemanager.ui.views;

import android.graphics.Color;
import android.graphics.drawable.GradientDrawable;
import android.support.annotation.ColorInt;
import android.util.DisplayMetrics;

import com.amaze.filemanager.utils.theme.AppTheme;

/**
 * Created by vishal on 30/5/16.
 * Class used to create background of check icon on selection with
 * a Custom {@link Color} and Stroke (boundary)
 */
public class CircleGradientDrawable extends GradientDrawable {

    private static final int STROKE_WIDTH = 2;
    private static final String STROKE_COLOR_LIGHT = "#EEEEEE";
    private static final String STROKE_COLOR_DARK = "#424242";
    private DisplayMetrics mDisplayMetrics;

    /**
     * Constructor
     *
     * @param color    the hex color of circular icon
     * @param appTheme current theme light/dark which will determine the boundary color
     * @param metrics  to convert the boundary width for {@link #setStroke} method from dp to px
     */
    public CircleGradientDrawable(String color, AppTheme appTheme, DisplayMetrics metrics) {
        this(appTheme, metrics);
        setColor(Color.parseColor(color));
    }

    /**
     * Constructor
     *
     * @param color    the color of circular icon
     * @param appTheme current theme light/dark which will determine the boundary color
     * @param metrics  to convert the boundary width for {@link #setStroke} method from dp to px
     */
    public CircleGradientDrawable(@ColorInt int color, AppTheme appTheme, DisplayMetrics metrics) {
        this(appTheme, metrics);
        setColor(color);
    }

    public CircleGradientDrawable(AppTheme appTheme, DisplayMetrics metrics) {
        this.mDisplayMetrics = metrics;

        setShape(OVAL);
        setSize(1, 1);
        setStroke(dpToPx(STROKE_WIDTH), (appTheme.equals(AppTheme.DARK)) ? Color.parseColor(STROKE_COLOR_DARK)
                : Color.parseColor(STROKE_COLOR_LIGHT));
    }

    private int dpToPx(int dp) {
        int px = Math.round(mDisplayMetrics.density * dp);
        return px;
    }
}
