package cn.muchinfo.rma.view.base.home.commodity

import android.content.Intent
import android.os.Bundle
import android.view.View
import android.view.ViewGroup
import androidx.viewpager.widget.PagerAdapter
import androidx.viewpager.widget.ViewPager
import cn.muchinfo.rma.R
import cn.muchinfo.rma.view.autoWidget.*
import cn.muchinfo.rma.view.base.BaseActivity
import cn.muchinfo.rma.view.base.home.customerdata.AddCustomerDataActivity
import com.blankj.utilcode.util.ActivityUtils
import com.blankj.utilcode.util.ConvertUtils
import com.qmuiteam.qmui.util.QMUIDisplayHelper
import com.qmuiteam.qmui.widget.tab.QMUITabIndicator
import com.qmuiteam.qmui.widget.tab.QMUITabSegment
import org.jetbrains.anko.*
import org.jetbrains.anko.support.v4.viewPager

/**
 * 现货商品信息
 * @property segment QMUITabSegment
 * @property selectedTabIndex Int
 * @property viewPager ViewPager
 * @property tabsArray List<String>
 * @property spotVarietiesUI SpotVarietiesUI
 * @property hedgeSpeciesUI HedgeSpeciesUI
 * @property futuresVarietiesUI FuturesVarietiesUI
 * @property pagerAdapter PagerAdapter
 */
class CommodityInformationActivity : BaseActivity<CommodityInformationViewModel>(){

    lateinit var segment: QMUITabSegment
    var selectedTabIndex: Int = 0
    private lateinit var viewPager: ViewPager

    private val tabsArray: List<String> by lazy {
        arrayListOf(
             "现货品种","套保品种","期货品种"
        )
    }

    /**
     * 现货品种UI
     */
    private val spotVarietiesUI by lazy {
        SpotVarietiesUI(this,viewModel)
    }
    /** 套保品种UI **/
    private val hedgeSpeciesUI by lazy { HedgeSpeciesUI(this,viewModel) }
    /** 期货品种UI **/
    private val futuresVarietiesUI by lazy { FuturesVarietiesUI(this,viewModel) }

    private val pagerAdapter: PagerAdapter by lazy {
        object : PagerAdapter() {

            override fun getPageTitle(position: Int): CharSequence? = tabsArray[position]

            override fun instantiateItem(container: ViewGroup, position: Int): Any {
                when (position) {
                    0 -> {
                        return spotVarietiesUI.root.apply {
                            container.addView(
                                this,
                                ViewGroup.LayoutParams(matchParent, matchParent)
                            )
                        }
                    }
                    1 -> {
                        return hedgeSpeciesUI.root.apply {
                            container.addView(
                                this,
                                ViewGroup.LayoutParams(matchParent, matchParent)
                            )
                        }
                    }
                    2 -> {
                        return futuresVarietiesUI.root.apply {
                            container.addView(
                                this,
                                ViewGroup.LayoutParams(matchParent, matchParent)
                            )
                        }
                    }
                    else -> return super.instantiateItem(container, position)
                }
            }

            override fun destroyItem(container: ViewGroup, position: Int, `object`: Any) {
                (`object` as? View)?.let { container.removeView(it) }
            }

            override fun isViewFromObject(view: View, `object`: Any): Boolean = view == `object`

            override fun getCount(): Int = tabsArray.size

        }
    }

    override fun onResume() {
        super.onResume()
        spotVarietiesUI.refrashData()
        hedgeSpeciesUI.refrashData()
        futuresVarietiesUI.refrashData()
//        when (selectedTabIndex) {
//            0 -> {
//
//            }
//            1 -> {
//
//            }
//            3 -> {
//
//            }
//        }
    }


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        verticalLayout {
            topBar {
                commonLeftButton()
                commonTitle {
                    text = "商品信息"
                }
                commonMenuButton(R.mipmap.customer_add) {
                    if (selectedTabIndex == 0){
                        val intent = Intent()
                        intent.putExtra("type","1")
                        intent.setClass(context, AddSpotGoodsActivity::class.java)
                        ActivityUtils.startActivity(intent)
                    }else if (selectedTabIndex == 1){
                        val intent = Intent()
                        intent.putExtra("type","1")
                        intent.setClass(context, AddHedgeGoodsActivity::class.java)
                        ActivityUtils.startActivity(intent)
                    }

                }
            }

            tabSegment {
                segment = this
                background = resources.getDrawable(R.color.segtabment_bg_color)
                addOnTabSelectedListener(object :
                    QMUITabSegment.OnTabSelectedListener {
                    override fun onDoubleTap(index: Int) {}
                    override fun onTabReselected(index: Int) {}
                    override fun onTabUnselected(index: Int) {}
                    override fun onTabSelected(index: Int) {
                        selectedTabIndex = index
                    }
                })
                setIndicator(
                    QMUITabIndicator(
                        QMUIDisplayHelper.dp2px(context, 2),
                        false,
                        true
                    )
                )
                setDefaultTextSize(ConvertUtils.sp2px(16f), ConvertUtils.sp2px(16f))
            }.lparams(matchParent, autoSize(80))

            view {
                background = resources.getDrawable(R.color.main_hit_bg_color)
            }.lparams(matchParent, autoSize(1)) {
                marginStart = autoSize(32)
                marginEnd = autoSize(32)
            }
            viewPager {
                background = resources.getDrawable(R.color.white)
                viewPager = this
                adapter = pagerAdapter
            }.lparams(matchParent, matchParent)

            segment.setupWithViewPager(viewPager)
            segment.selectTab(selectedTabIndex)
        }
    }
}


