package com.zhangxq.test.listview;

import android.content.Context;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;

import com.zhangxq.refreshlayout.RefreshView;
import com.zhangxq.test.R;

/**
 * Created by zhangxiaoqi on 2019/4/17.
 */

public class MyRefreshView extends RefreshView implements View.OnClickListener {
    private TextView tvContent;
    private TextView tvHeight;
    private View viewContent;
    private ProgressBar progressBar;
    private Button btnReturn;
    private View viewCover;
    private View viewContainer;

    private Listener listener;

    public MyRefreshView(Context context) {
        this(context, null);
    }

    public MyRefreshView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        viewContent = LayoutInflater.from(context).inflate(R.layout.view_my_refresh, null);
        addView(viewContent);
        tvContent = viewContent.findViewById(R.id.tvContent);
        viewContainer = viewContent.findViewById(R.id.viewContainer);
        tvHeight = viewContent.findViewById(R.id.tvHeight);
        progressBar = viewContent.findViewById(R.id.progressBar);
        viewCover = viewContent.findViewById(R.id.viewCover);
        btnReturn = viewContent.findViewById(R.id.btnReturn);
        btnReturn.setOnClickListener(this);
    }

    public MyRefreshView setListener(Listener listener) {
        this.listener = listener;
        return this;
    }

    @Override
    public void setHeight(float dragDistance, float distanceToRefresh, float totalDistance) {
        tvHeight.setText((int) dragDistance + ":" + (int) distanceToRefresh + ":" + (int) totalDistance);
        viewCover.setAlpha((totalDistance - dragDistance) / totalDistance);
    }

    @Override
    public void setRefresh() {
        tvContent.setText("正在刷新");
        progressBar.setVisibility(VISIBLE);
    }

    @Override
    public void setPullToRefresh() {
        progressBar.setVisibility(GONE);
        tvContent.setText("下拉刷新");
    }

    @Override
    public void setReleaseToRefresh() {
        progressBar.setVisibility(GONE);
        tvContent.setText("释放刷新");
    }

    @Override
    public void setReleaseToSecondFloor() {
        progressBar.setVisibility(GONE);
        tvContent.setText("释放到达二楼");
    }

    @Override
    public void setToSecondFloor() {
        viewCover.setAlpha(0);
        viewContainer.setVisibility(GONE);
    }

    @Override
    public void setToFirstFloor() {
        viewCover.setAlpha(1);
        viewContainer.setVisibility(VISIBLE);
    }

    @Override
    public void onClick(View v) {
        if (listener != null) listener.onBackFirstFloor();
    }
}