package cn.edu.hpu.yuan.yuannews.main.base;

import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.view.View;
import com.pnikosis.materialishprogress.ProgressWheel;
import cn.edu.hpu.yuan.yuannews.main.app.ApplicationComponent;
import cn.edu.hpu.yuan.yuannews.main.data.remote.NewsAPIService;

/**
 * Created by yuan on 16-5-9.
 * Fragment 基类
 * 1.为广大的fragment提供支持
 * 2.ApplicationComponent
 */
public abstract class BaseFragment extends Fragment{


    protected ApplicationComponent applicationComponent;
    protected NewsAPIService newsAPIService;
    protected Activity activity;

    public void setApplicationComponent(ApplicationComponent applicationComponent) {
        this.applicationComponent = applicationComponent;
    }

    public ApplicationComponent getApplicationComponent() {
        return applicationComponent;
    }

    public NewsAPIService getNewsAPIService() {
        return newsAPIService;
    }

    public void setNewsAPIService(NewsAPIService newsAPIService) {
        this.newsAPIService = newsAPIService;
    }

    protected boolean isVisible;
    private ProgressWheel wheel;


    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        activity=getActivity();
        initComponent();
    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if(getUserVisibleHint()){
            isVisible=true;
        }else{
            isVisible=false;
        }
    }


    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        initProgress();
    }

    private void initProgress() {
        wheel = new ProgressWheel(getContext());
        wheel.setBarColor(Color.GREEN);
        wheel.setEnabled(true);
        wheel.setBarColor(Color.BLUE);
        wheel.setBackgroundColor(Color.GRAY);
    }

    protected void showProgress(){
        wheel.setVisibility(View.VISIBLE);
    }

    protected void hideProgress(){
        wheel.setVisibility(View.GONE);
    }

    /**
     * 初始化变量操作(注入器注入)
     */
    protected abstract void initComponent();

}