package android.marshon.likequanmintv.mvp.live.ui;

import android.content.pm.ActivityInfo;
import android.marshon.likequanmintv.R;
import android.marshon.likequanmintv.bean.PlayBean;
import android.marshon.likequanmintv.controller.LivePlayerHolder;
import android.marshon.likequanmintv.controller.RoomDataController;
import android.marshon.likequanmintv.mvp.live.LivePlayerPresenterImpl;
import android.marshon.likequanmintv.utils.blur.Blurry;
import android.marshon.likequanmintv.view.LoadindImageView;
import android.os.Bundle;
import android.view.SurfaceView;
import android.view.View;
import android.widget.ImageView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.target.ImageViewTarget;

import org.json.JSONObject;

import javax.inject.Inject;

/**
 * Created by It.Marshon on 2016/11/28 0028 14:30
 */

public class VerFullLiveUI extends BaseLiveUI {


    private SurfaceView mSurfaceView;
    private LivePlayerHolder playerHolder;
    private PlayBean mPlayBean;

    @Inject
    LivePlayerPresenterImpl livePlayerPresenterImpl;
    private int mCodec;
    private RoomDataController mRoomDataController;
    private String mPlayerPath;
    private ImageView bgImg;
    private ImageView imgBack;
    private LoadindImageView loadingView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_verfulllive);
        mActivityComponent.inject(this);
        livePlayerPresenterImpl.attachView(this);
        initPlayer();
        initControll();
        initData();
    }

    private void initPlayer() {
        mPlayBean = (PlayBean) getIntent().getSerializableExtra("playBean");
        mSurfaceView = (SurfaceView) findViewById(R.id.mSurfaceView);
        bgImg = (ImageView) findViewById(R.id.bgImg);
        loadingView = (LoadindImageView) findViewById(R.id.loadingView);
        imgBack = (ImageView) findViewById(R.id.imgBack);
        imgBack.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onBackPressed();
            }
        });
        mCodec = getIntent().getIntExtra("mediaCodec", 0);
//        mVideoPath = getIntent().getStringExtra("videoPath");
    }

    private void initControll() {

    }

    private void initData() {
        if (mPlayBean!=null){
            livePlayerPresenterImpl.enterRoom(mPlayBean.uid);
        }

        Glide.with(this)
                .load(mPlayBean.love_cover)
                .into(new ImageViewTarget<GlideDrawable>(bgImg) {
                    @Override
                    protected void setResource(GlideDrawable resource) {
                        bgImg.setImageDrawable(resource);
                        Blurry.with(VerFullLiveUI.this)
                                .animate()
                                .radius(10)
                                .sampling(8)
                                .capture(bgImg)
                                .into(bgImg);
                    }
                });
    }


    @Override
    protected void onDestroy() {
        if (playerHolder!=null) {
            playerHolder.release();
            playerHolder=null;
        }
        super.onDestroy();
    }

    @Override
    protected void onResume() {
        super.onResume();
        if (playerHolder!=null)
            playerHolder.onResume();
    }

    @Override
    protected void onPause() {
        super.onPause();
        if (playerHolder!=null)
            playerHolder.onPause();
    }


    @Override
    protected void toPrepare() {
        if (playerHolder!=null)
        playerHolder.prepare();
    }

    @Override
    public void onConnecting() {
        bgImg.setAlpha(1);
        bgImg.setVisibility(View.VISIBLE);
        loadingView.setVisibility(View.VISIBLE);

    }

    @Override
    public void onReConnecting() {
        bgImg.setAlpha(1);
        bgImg.setVisibility(View.VISIBLE);
        loadingView.setVisibility(View.VISIBLE);
    }

    @Override
    public void onConnectSucces() {
        loadingView.setVisibility(View.GONE);
    }

    @Override
    public void onConnectFailed() {

    }

    @Override
    public void onPlayComleted() {

    }

    @Override
    public void onPlayerStart() {
        loadingView.setVisibility(View.GONE);
        bgImg.animate().alpha(0).setDuration(1000).start();

//        bgImg.setVisibility(View.GONE);
    }

    @Override
    public void onPlayePause() {

    }

    @Override
    public void onRoomData(JSONObject roomJson) {
        mRoomDataController = new RoomDataController(roomJson);
        mPlayerPath = mRoomDataController.getPlayerPath(0);
        playerHolder = new LivePlayerHolder(this,mSurfaceView,mCodec,mPlayerPath);
        playerHolder.startPlayer();
    }
}