package com.daemon.mvp.presenter;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.Toast;

import com.daemon.mvp.R;
import com.daemon.mvp.utils.AppManager;
import com.daemon.mvp.view.IView;


/**
 * Created by Daemon on 2015/11/20.
 */
public abstract class ActivityPresenter<T extends IView> extends AppCompatActivity {

    /**
     * Presenter 持有View层的引用 泛型支持直接引用对象的问题
     */
    public T iView;
    private ProgressBar progressBar;
    private RelativeLayout mActivityLayout;

    @Override
    protected void onSaveInstanceState(Bundle outState) {
       // super.onSaveInstanceState(outState);
    }

    /**
     * 初始化 获取V层对象
     */
    public ActivityPresenter() {
        try {
            iView=getIViewClass().newInstance();
        } catch (InstantiationException e) {
           throw new RuntimeException("create IView error");
        } catch (IllegalAccessException e) {
            throw new RuntimeException("create IView error");
        }
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        iView.create(getLayoutInflater(), null, savedInstanceState);

        AppManager.getAppManager().addActivity(this);

        progressBar=new ProgressBar(this);

        //为了灵活加入全局ProgressBar 这里自顶一个RelativeLayout
        mActivityLayout = new RelativeLayout(this);

        //加入 布局文件
        RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.MATCH_PARENT);
        mActivityLayout.addView(iView.getRootView(),layoutParams);

        iView.getRootView().setId(R.id.rootId);

        //加入 ProgressBar
        RelativeLayout.LayoutParams layoutParams1 = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.WRAP_CONTENT,
                RelativeLayout.LayoutParams.WRAP_CONTENT);

        layoutParams1.addRule(RelativeLayout.CENTER_IN_PARENT,R.id.rootId);
        mActivityLayout.addView(progressBar,layoutParams1);
        hideLoadingView();

        setContentView(mActivityLayout);



        iView.initWeidget();

        bindEventListener();

    }

    /**
     * 显示进度加载
     */
    public void showLoadingView(){
        progressBar.setVisibility(View.VISIBLE);
    }

    /**
     * 隐藏进度加载
     */
    public void hideLoadingView(){
        progressBar.setVisibility(View.GONE);
    }

    public void changeLoadingState(){
        if(progressBar.getVisibility()==View.GONE){
            progressBar.setVisibility(View.VISIBLE);
        }else{
            progressBar.setVisibility(View.GONE);
        }
    }

    /**
     * 监听事件
     */
    protected void bindEventListener() {

    }



    @Override
    protected void onDestroy() {
        super.onDestroy();
        iView.destory();
        iView=null;


        AppManager.getAppManager().finishActivity(this);
    }






    public abstract Class<T> getIViewClass();


    public void isDataError(){
        Toast.makeText(this,"数据异常",Toast.LENGTH_SHORT).show();
        return;
    }


}