package com.base.appzxhy.ui.main

import android.graphics.Color
import android.view.LayoutInflater
import android.widget.TextView
import androidx.navigation.NavController
import androidx.navigation.fragment.NavHostFragment
import com.base.appzxhy.R
import com.base.appzxhy.base.BaseActivity
import com.base.appzxhy.bean.HomeTabUIBean
import com.base.appzxhy.databinding.ActivityMainBinding
import com.base.appzxhy.databinding.ItemHomeTabBinding
import com.base.appzxhy.utils.LogEx
import com.google.android.material.tabs.TabLayout
import com.google.android.material.tabs.TabLayout.OnTabSelectedListener

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

    private lateinit var navController: NavController
    private val homeTabs by lazy {
        arrayOf(
            HomeTabUIBean(R.drawable.bg_selector_home, getString(R.string.home)),
        )
    }

    override fun initView() {
        super.initView()
        navController = (supportFragmentManager.findFragmentById(R.id.fragment_container) as NavHostFragment).navController
    }

    private fun initTab() {
        homeTabs.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
            binding.tabLayout.addTab(tab)
        }
        binding.tabLayout.addOnTabSelectedListener(object : OnTabSelectedListener {
            override fun onTabSelected(tab: TabLayout.Tab?) {
                tab?.setSelected()
            }

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

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

            }
        })

        val defaultTab = binding.tabLayout.getTabAt(0)
        defaultTab?.select()
        defaultTab?.setSelected()
    }

    private fun naviFragment(id: Int) {
        when (id) {
            0 -> {
            }

            1 -> {
            }

            2 -> {
            }
        }
    }

    fun TabLayout.Tab.setUnselected() {
        val textView = customView?.findViewById<TextView>(R.id.tv_tab)
        LogEx.logDebug(TAG, "setUnselected ${textView?.text}")
        textView?.setTextColor(Color.parseColor("#838383"))
    }

    fun TabLayout.Tab.setSelected() {
        val textView = customView?.findViewById<TextView>(R.id.tv_tab)
        LogEx.logDebug(TAG, "setSelected ${textView?.text}")
        textView?.setTextColor(Color.parseColor("#FF0000"))
        naviFragment(this.id)
    }

}