package apps.xenione.com.swipelayout.example.swipe;

import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.ColorFilter;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.os.Build;
import android.support.v4.content.res.ResourcesCompat;
import android.support.v4.graphics.drawable.DrawableCompat;
import android.util.AttributeSet;
import android.view.View;
import android.widget.ImageView;

import com.xenione.libs.swipemaker.AbsCoordinatorLayout;
import com.xenione.libs.swipemaker.SwipeLayout;
import com.xenione.libs.swipemaker.SwipeLayout.Orientation;

import apps.xenione.com.swipelayout.R;


/**
 * Created on 06/04/16.
 */
public class VerticalCoordinatorLayout extends AbsCoordinatorLayout {

    private ImageView mBg;
    private View mDelete;
    private View mAction;
    private SwipeLayout mForegroundView;

    public enum Color {
        PINK(R.color.colorAccent),
        BLUE(R.color.colorSecondaryAccent);

        private int resId;
        private ColorFilter color;

        Color(int resId) {
            this.resId = resId;
        }

        public ColorFilter getColor(Context context) {
            if (color == null) {
                color = new PorterDuffColorFilter(
                        ResourcesCompat.getColor(context.getResources(), resId, context.getTheme()), PorterDuff.Mode.MULTIPLY);
            }
            return color;
        }
    }

    public VerticalCoordinatorLayout(Context context) {
        super(context);
    }

    public VerticalCoordinatorLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public VerticalCoordinatorLayout(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    @TargetApi(Build.VERSION_CODES.LOLLIPOP)
    public VerticalCoordinatorLayout(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }

    @Override
    public void doInitialViewsLocation() {
        mForegroundView = (SwipeLayout) findViewById(R.id.foregroundView);
        mForegroundView.setOrientation(Orientation.VERTICAL);
        mBg = (ImageView) findViewById(R.id.bg_disc);
        mDelete = findViewById(R.id.delete);
        mAction = findViewById(R.id.action);
        int deleteTop = mForegroundView.getHeight() - mDelete.getTop();
        int actionTop = mForegroundView.getHeight() - mAction.getTop();
        mForegroundView.anchor(-actionTop, -deleteTop, 0);
    }

    @Override
    public void onTranslateChange(float global, int index, float relative) {
        if (index == 0) {
            if (relative == 0) {
                removeColorFilter();
            } else {
                applyColorFilter(Color.PINK);
            }
        } else if (index == 1 && relative > 0) {
            applyColorFilter(Color.BLUE);
        }
    }

    private void removeColorFilter(){
        mBg.clearColorFilter();
    }

    private void applyColorFilter(Color color) {
        if (DrawableCompat.getColorFilter(mBg.getDrawable()) == color.getColor(getContext())) {
            return;
        }
        mBg.setColorFilter(color.getColor(getContext()));
    }
}