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

import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatActivity
import androidx.viewpager.widget.PagerAdapter
import androidx.viewpager.widget.ViewPager
import cn.muchinfo.rma.R
import cn.muchinfo.rma.global.data.WrStandardData
import cn.muchinfo.rma.view.autoWidget.*
import com.blankj.utilcode.util.ConvertUtils
import com.qmuiteam.qmui.widget.tab.QMUITabSegment
import mtp.polymer.com.autowidget.adapter.BaseAdapter
import org.jetbrains.anko._FrameLayout
import org.jetbrains.anko.matchParent
import org.jetbrains.anko.support.v4.viewPager
import org.jetbrains.anko.verticalLayout
import org.jetbrains.anko.view


/**
 * 期货品种
 * @property activity AppCompatActivity
 * @property viewModel CommodityInformationViewModel
 * @property root _FrameLayout
 * @constructor
 */
class FuturesVarietiesUI(private val activity : AppCompatActivity, private val viewModel : CommodityInformationViewModel){

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

    private val tabsArray: List<String> by lazy {
        arrayListOf(
            "正常", "停用"
        )
    }
    private val futuresVarietiesNormalUI by lazy { FuturesVarietiesNormalUI(activity, viewModel) }
    val futuresVarietiesStopUI by lazy { FuturesVarietiesStopUI(activity, 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 futuresVarietiesNormalUI.root.apply {
                            container.addView(
                                this,
                                ViewGroup.LayoutParams(matchParent, matchParent)
                            )
                        }
                    }
                    1 -> {
                        return futuresVarietiesStopUI.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

        }
    }

    /**
     * 每次回到页面就刷新下
     */
    fun refrashData(){

    }

    val root = _FrameLayout(activity).apply {
        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(null)
            setDefaultTextSize(ConvertUtils.sp2px(16f), ConvertUtils.sp2px(16f))
        }.lparams(matchParent, autoSize(100))

        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)
    }

}

/**
 * 期货品种（正常）
 * @property activity AppCompatActivity
 * @property viewModel CommodityInformationViewModel
 * @constructor
 */
class FuturesVarietiesNormalUI(
    private val activity: AppCompatActivity,
    private val viewModel: CommodityInformationViewModel
){
    private lateinit var swipeToLayout: SwipeToLoadLayout
    private lateinit var statusLayout: StatusLayout

    private val spotVarietiesNormalAdapter: BaseAdapter<WrStandardData, CommodityViewHolder> = BaseAdapter { _, _ -> CommodityViewHolder(activity, viewModel,status = "") }

    val root = _FrameLayout(activity).apply {
        verticalLayout {
            creatSpotVarietiesHeadUI(text1 = "现货品种",text2 = "代码",text3 = "单位",text4 = "状态")

            view {
                background = resources.getDrawable(R.color.line_hint_color)
            }.lparams(matchParent, autoSize(1))

            statusLayout(contentBlock = {
                statusLayout = this
//                bindTaskStatus(viewModule.status)
                swipeToLoadLayout {
                    swipeToLayout = this
                    setEnableRefresh(true)
                    setEnableLoadMore(false)
                    setOnRefreshListener {

                    }
                    setEnableScrollContentWhenLoaded(false)
                    setEnableLoadMoreWhenContentNotFull(false)
                    recyclerView {
                        background = resources.getDrawable(R.color.white)
                        adapter = spotVarietiesNormalAdapter
                    }.lparams(matchParent, matchParent)
                }
            }, emptyBlock = {
                emptyView(hint = resources.getString(R.string.now_no_data))
            }).lparams(matchParent, matchParent)
        }
    }
}

/**
 * 期货品种（停用）
 * @property activity AppCompatActivity
 * @property viewModel CommodityInformationViewModel
 * @property swipeToLayout SwipeToLoadLayout
 * @property statusLayout StatusLayout
 * @property spotVarietiesNormalAdapter BaseAdapter<WrStandardData, CommodityViewHolder>
 * @property root _FrameLayout
 * @constructor
 */
class FuturesVarietiesStopUI(
    private val activity: AppCompatActivity,
    private val viewModel: CommodityInformationViewModel
){
    private lateinit var swipeToLayout: SwipeToLoadLayout
    private lateinit var statusLayout: StatusLayout

    private val spotVarietiesNormalAdapter: BaseAdapter<WrStandardData, CommodityViewHolder> = BaseAdapter { _, _ -> CommodityViewHolder(activity, viewModel,"") }

    val root = _FrameLayout(activity).apply {
        verticalLayout {
            creatSpotVarietiesHeadUI(text1 = "现货品种",text2 = "代码",text3 = "单位",text4 = "状态")

            view {
                background = resources.getDrawable(R.color.line_hint_color)
            }.lparams(matchParent, autoSize(1))

            statusLayout(contentBlock = {
                statusLayout = this
//                bindTaskStatus(viewModule.status)
                swipeToLoadLayout {
                    swipeToLayout = this
                    setEnableRefresh(true)
                    setEnableLoadMore(false)
                    setOnRefreshListener {

                    }
                    setEnableScrollContentWhenLoaded(false)
                    setEnableLoadMoreWhenContentNotFull(false)
                    recyclerView {
                        background = resources.getDrawable(R.color.white)
                        adapter = spotVarietiesNormalAdapter
                    }.lparams(matchParent, matchParent)
                }
            }, emptyBlock = {
                emptyView(hint = resources.getString(R.string.now_no_data))
            }).lparams(matchParent, matchParent)
        }
    }
}

