package com.base.appzxhy.ui.main

import android.graphics.Color
import android.view.LayoutInflater
import android.view.View
import android.widget.TextView
import androidx.core.content.ContextCompat
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.base.appzxhy.R
import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.bean.HomeTabUIBean
import com.base.appzxhy.business.ads.AdsMgr
import com.base.appzxhy.databinding.ActivityMainBinding
import com.base.appzxhy.databinding.ItemHomeTabBinding
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayout.OnTabSelectedListener

class MainActivity : BaseActivity<ActivityMainBinding>(ActivityMainBinding::inflate) {

    private val fragmentList = listOf(
        Home2Fragment(),
        RecoveryFragment(),
        RecycleBinFragment()
    )

    private val viewPagerAdapter by lazy {
        object : FragmentStateAdapter(this) {
            override fun getItemCount(): Int = fragmentList.size

            override fun createFragment(position: Int): Fragment = fragmentList[position]
        }
    }

    override fun initView() {
        super.initView()

        initTab()
        initViewPager2()
        AdsMgr.showBanner(binding.flBanner, false)
    }

    private fun initViewPager2() {
        binding.viewPager2.adapter = viewPagerAdapter
        binding.viewPager2.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
            override fun onPageSelected(position: Int) {
                val defaultTab = binding.tabLayout.getTabAt(position)
                defaultTab?.select()
                defaultTab?.setSelected()
            }
        })
    }

    private fun initTab() {
        arrayOf(
            HomeTabUIBean(R.drawable.tab_clean_selector, getString(R.string.clean)),
            HomeTabUIBean(R.drawable.tab_recovery_selector, getString(R.string.recovery)),
            HomeTabUIBean(R.drawable.tab_recyclebin_selector, getString(R.string.recyclebin)),
        ).forEachIndexed { index, homeTab ->
            val tab = binding.tabLayout.newTab()
            val view = LayoutInflater.from(this).inflate(R.layout.item_home_tab, null)
            val tabBinding = ItemHomeTabBinding.bind(view)
            tabBinding.ivIcon.setImageResource(homeTab.icon)
            tabBinding.tvTab.text = homeTab.tab
//            tabBinding.tvTab.setTextColor(ContextCompat.getColor(this, R.color.color_tab_home))
            tab.customView = tabBinding.root
            tab.id = index
            if (index == 1) {
                tabBinding.vDian.visibility = View.VISIBLE
            } else {
                tabBinding.vDian.visibility = View.GONE
            }
            binding.tabLayout.addTab(tab)
        }
        binding.tabLayout.addOnTabSelectedListener(object : OnTabSelectedListener {
            override fun onTabSelected(tab: TabLayout.Tab?) {
                tab?.let {
                    if (binding.viewPager2.currentItem == tab.id) return
                    binding.viewPager2.setCurrentItem(tab.id, false)
                }
            }

            override fun onTabUnselected(tab: TabLayout.Tab?) {
                tab?.setUnselected()
            }

            override fun onTabReselected(tab: TabLayout.Tab?) {

            }
        })
    }

    fun TabLayout.Tab.setSelected() {
        val textView = customView?.findViewById<TextView>(R.id.tv_tab)
        textView?.setTextColor(
            ContextCompat.getColor(this@MainActivity, R.color.colorPrimary)
        )
    }

    fun TabLayout.Tab.setUnselected() {
        val textView = customView?.findViewById<TextView>(R.id.tv_tab)
        textView?.setTextColor(Color.parseColor("#999999"))
    }

}