package com.bigfish.salecenter.ui.fragment;

import android.content.res.AssetManager;
import android.graphics.Typeface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.TextView;

import androidx.fragment.app.Fragment;

import com.bigfish.salecenter.R;
import com.bigfish.salecenter.databinding.FragmentHomeSaleBinding;
import com.bigfish.salecenter.event.RefreshSaleTab;
import com.bigfish.salecenter.model.SaleTab;
import com.bigfish.salecenter.presenter.homesale.HomeSaleContract;
import com.bigfish.salecenter.presenter.homesale.HomeSalePresenter;
import com.dayu.base.api.APIService;
import com.dayu.base.api.Api;
import com.dayu.base.ui.adapter.FragmentAdapter;
import com.dayu.base.ui.fragment.BaseFragment;
import com.dayu.event.Notice;
import com.dayu.event.SaleTabNumEvent;
import com.dayu.utils.TabLayoutUtils;
import com.google.android.material.tabs.TabLayout;

import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by mReturn
 * on 2020/2/12
 **/
public class HomeSaleFragment extends BaseFragment<HomeSalePresenter, FragmentHomeSaleBinding>
        implements HomeSaleContract.View {

    public List<Fragment> list_fragments;
    private FragmentAdapter adapter;
    private TextView mTabNumTv;
    private TextView mTabTextTv;
    private boolean isFirstAddTab = true;
    private String[] tabDesc;
    private String mUmTag = "HomeSaleFragment";

    public static HomeSaleFragment newInstance() {
        Bundle args = new Bundle();
        HomeSaleFragment fragment = new HomeSaleFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    public int getLayoutId() {
        return R.layout.fragment_home_sale;
    }

    @Override
    public void setPresenter() {
//        mBind.setPresenter(mPresenter);
    }

    @Override
    public void initView() {
        tabDesc = new String[]{mActivity.getString(R.string.sale_products),"待提交",
                "待审核", mActivity.getString(R.string.sale_done)};
        EventBus.getDefault().register(this);
        initData();
    }

    private void initData() {
        list_fragments = new ArrayList<>();
        list_fragments.add(SaleProductFragment.newInstance(1,1));
        list_fragments.add(SaleProductFragment.newInstance(2,1));
        list_fragments.add(SaleProductFragment.newInstance(3,2));
        list_fragments.add(SaleProductFragment.newInstance(4,34));
        adapter = new FragmentAdapter(getFragmentManager(), list_fragments);
        mBind.vpSale.setAdapter(adapter);
        mBind.tbSale.setupWithViewPager(mBind.vpSale);
        mBind.tbSale.setTabMode(TabLayout.MODE_FIXED);
        mBind.vpSale.setOffscreenPageLimit(4);
        mBind.tbSale.post(() ->
                TabLayoutUtils.setIndicator(mBind.tbSale, 0, 0, R.color.cl_order_item_line_bg, mActivity));
        mBind.tbSale.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                int temp = tab.getPosition();
                if (tab.getCustomView() == null) {
                    return;
                }
                mTabNumTv = tab.getCustomView().findViewById(R.id.tabtext);
                mTabTextTv = tab.getCustomView().findViewById(R.id.tabicon);
                if (temp != 2)
                    mTabNumTv.setTextColor(getResources().getColor(R.color.bg_button));
                mTabTextTv.setTextColor(getResources().getColor(R.color.bg_button));
                mBind.vpSale.setCurrentItem(temp);
//                MobclickAgent.onPageStart("SaleChildFragment" + temp);
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                if (mTabNumTv == null || mTabTextTv == null) {
                    return;
                }
                int temp = tab.getPosition();
                if (temp != 2)
                    mTabNumTv.setTextColor(getResources().getColor(R.color.cl_tab_init));
                mTabTextTv.setTextColor(getResources().getColor(R.color.cl_tab_init));
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {
            }
        });

        mPresenter.chooseTab(0);
        getNotice();
    }

    @Override
    public void setTabNum(SaleTab tab, int myTabIndex) {
//        EventBus.getDefault().post(new SaleTabNumEvent(tab.products+tab.collect+tab.inSale+tab.saleDone));
        EventBus.getDefault().post(new SaleTabNumEvent(tab.unSubmit));
        int[] tabNum = new int[]{tab.products, tab.unSubmit, tab.unAudit, tab.finish};
        if (isFirstAddTab) {
            mBind.tbSale.removeAllTabs();
            mBind.tbSale.addTab(mBind.tbSale.newTab().setCustomView(CreatTab(0, tabNum[0], tabDesc[0])));
            mBind.tbSale.addTab(mBind.tbSale.newTab().setCustomView(CreatTab(1, tabNum[1], tabDesc[1])));
            mBind.tbSale.addTab(mBind.tbSale.newTab().setCustomView(CreatTab(2, tabNum[2], tabDesc[2])));
            mBind.tbSale.addTab(mBind.tbSale.newTab().setCustomView(CreatTab(3, tabNum[3], tabDesc[3])));
            isFirstAddTab = false;
        } else {
            for (int i = 0; i < mBind.tbSale.getTabCount(); i++) {
                TextView tv = mBind.tbSale.getTabAt(i).getCustomView().findViewById(R.id.tabtext);
                TextView tvIcon = mBind.tbSale.getTabAt(i).getCustomView().findViewById(R.id.tabicon);
                tvIcon.setText(tabDesc[i]);
                int count = tabNum[i];
                tv.setText(count + "");
                tv.setTextSize(28);
                if (count > 999) {
                    tv.setTextSize(24);
                }
                if (count > 9999) {
                    tv.setTextSize(20);
                }
                if (count > 99999) {
                    tv.setTextSize(16);
                }
            }
            if (myTabIndex != -1) {
                mBind.vpSale.setCurrentItem(myTabIndex);
                mBind.tbSale.getTabAt(myTabIndex).select();
            }
        }
    }

    private View CreatTab(int index, int number, String iconID) {
        View newtab = LayoutInflater.from(mActivity).inflate(R.layout.layout_sale_tab, null);
        TextView textView_number = newtab.findViewById(R.id.tabtext);
        AssetManager mgr = mActivity.getAssets();
        Typeface tf = Typeface.createFromAsset(mgr, "fonts/DIN Alternate Bold.ttf");
        textView_number.setTypeface(tf);
        textView_number.setText(number + "");
        TextView textView = newtab.findViewById(R.id.tabicon);
        textView.setText(iconID);
        return newtab;
    }

    /**
     * 获取公告数据.
     */
    private void getNotice() {
        Api.getService(APIService.class).getNotice("2").compose(Api.applySchedulers())
                .subscribe(mPresenter.baseObserver(data -> {
                    StringBuilder tip = new StringBuilder();
                    for (Notice notice : data) {
                        tip.append(notice.getComment() + "     ");
                    }
                    if (data.isEmpty()) {
                        mBind.notice.setVisibility(View.GONE);
                    } else {
                        mBind.notice.setVisibility(View.VISIBLE);
                    }
                    mBind.notice.setFocusable(true);
                    mBind.notice.requestFocus();
                    mBind.notice.setText(tip.toString());
                }));
    }

    @Override
    public void onDetach() {
        super.onDetach();
        EventBus.getDefault().unregister(this);
    }

    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        if (!hidden) {
            getNotice();
        }
    }

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void onRefreshTab(RefreshSaleTab event) {
        mPresenter.chooseTab(event.getTabNum());
    }

}