package Views.Home;

import android.animation.Animator;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.graphics.Bitmap;
import android.view.MotionEvent;
import android.view.VelocityTracker;
import android.widget.ImageView;

import com.linedeer.api.EventCall;
import com.linedeer.api.ITask;
import com.linedeer.player.Ui;
import com.player.audioHandler;
import com.player.playerEvents;
import com.shape.Library.allsong.itemBack;

import Views.api.FMView;
import Views.api.FMlyt;
import Views.api.animLis;

public class imgSlider extends FMlyt{

    ImageView top;
    ImageView btm;
    FMView FMTop;
    public VelocityTracker Vx;
    public imgSlider(Context context, int width, int height) {
        super(context, width, height);
        setBackgroundColor(itemBack.Color0);
        Vx = VelocityTracker.obtain();

        btm = creatImg();
        addView(btm);

        top = creatImg();
        addView(top);

        FMTop = new FMView(getContext(),width,height);
        FMTop.setBackgroundColor(0x66000000);
        FMTop.setClickable(false);
        addView(FMTop);

        Ui.ef.playerEvent.addEvent(new EventCall(new int[]{playerEvents.SONG_CHANGED,playerEvents.PLAYLIST_CHANGED, Ui.ef.Event_onBind}){
            @Override
            public void onCall(int eventId) {
                if(eventId == playerEvents.SONG_CHANGED){
                    songChanged();
                }

                if(eventId == Ui.ef.Event_onBind || playerEvents.PLAYLIST_CHANGED == eventId){
                    if(Ui.ef.MusicPlayer.handler.list!= null){
                        songChanged();
                    }
                }
            }
        });
    }

    ImageView creatImg(){
        ImageView top = new ImageView(getContext());
        top.setLayoutParams(new LayoutParams(width,width));
        top.setY(height - width);
        top.setBackgroundColor(0xFF999999);
        top.setScaleType(ImageView.ScaleType.CENTER_CROP);
        return top;
    }

    Bitmap BM;
    public void songChanged(){
        ITask task = new ITask(){
            Bitmap bm;
            @Override
            public void Go() {
                int AID = Ui.ef.MusicPlayer.handler.getAIDfrom(0);
                BM = bm = audioHandler.getAlubumArtBitmapById(getContext().getContentResolver(),AID);
            }

            @Override
            public void than() {
                Ui.ef.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        top.setImageBitmap(bm);
                        btm.setImageBitmap(bm);
                    }
                });
            }
        };
        task.execute();
        ///btm.setImageBitmap();
    }

    int DX;
    int DY;

    @Override
    public void onDown(MotionEvent event) {
        super.onMove(event);
        Vx.clear();
        Vx.addMovement(event);
        DX = (int) event.getX();
        DY = (int) event.getY();
    }

    @Override
    public void onMove(MotionEvent event) {
        super.onMove(event);
        Vx.addMovement(event);
        top.setX(event.getX() - DX);
    }

    @Override
    public void onUp(MotionEvent event) {
        super.onMove(event);
        Vx.computeCurrentVelocity(100);
        float valx = Vx.getXVelocity(0);
        Vx.clear();
        if((int)Math.abs(valx) < 12){
            //top.setX(0);
            Play(0);
        }else if(valx > 0){
            Play(width);
            //top.setX(width - 200);
        }else{
            Play(-width);
            //top.setX(-(width - 200));
        }
    }

    AnimatorSet Set;
    void Play(int val){
        final ImageView iv = top;
        top = btm;
        btm = creatImg();
        btm.setImageBitmap(BM);
        addView(btm,0);
        Set = new AnimatorSet();
        Set.setInterpolator(Ui.cd.TH);
        Set.playTogether(ObjectAnimator.ofFloat(iv, "X",val));
        Set.setDuration(500).start();
        Set.addListener(new animLis(){
            @Override
            public void onAnimationEnd(Animator animation) {
                imgSlider.this.removeView(iv);
            }
        });
    }
}