package com.lukouguoji.gjc.holder

import android.view.View
import com.lukouguoji.gjc.activity.GjcWeighingListActivity
import com.lukouguoji.gjc.activity.GjcWeighingStartActivity
import com.lukouguoji.gjc.databinding.ItemGjcWeighingBinding
import com.lukouguoji.module_base.base.BaseViewHolder
import com.lukouguoji.module_base.common.ConstantEvent
import com.lukouguoji.module_base.impl.FlowBus
import com.lukouguoji.module_base.bean.GjcWeighingBean

/**
 * 国际出港计重列表 ViewHolder
 *
 * item 布局分平板（layout-sw600dp/item_gjc_weighing.xml，含选择图标 iv_icon）
 * 与手机（layout/item_gjc_weighing.xml，卡片式，含单票提前运抵按钮 btn_pre_arrive）两个变体，
 * 单侧独有的 id 在 Binding 基类中为可空字段，需判空调用。
 */
class GjcWeighingViewHolder(view: View) :
    BaseViewHolder<GjcWeighingBean, ItemGjcWeighingBinding>(view) {

    override fun onBind(item: Any?, position: Int) {
        val bean = getItemBean(item)!!
        binding.bean = bean
        binding.position = position
        binding.executePendingBindings()

        // 选择图标点击事件 - 切换选择状态（平板独有）
        binding.ivIcon?.setOnClickListener {
            // 反转checked状态
            bean.checked.set(!bean.checked.get())
            FlowBus.with<String>(ConstantEvent.EVENT_CHECK_CHANGED).tryEmit("check_changed")

            // 立即更新UI (图片自动切换)
            binding.executePendingBindings()
        }

        // 卡片内「提前运抵」按钮（手机独有，单票操作）
        binding.btnPreArrive?.setOnClickListener {
            (it.context as? GjcWeighingListActivity)?.preArriveClick(bean)
        }

        // 整行点击跳转到开始计重页面
        binding.ll.setOnClickListener {
            GjcWeighingStartActivity.startForAdd(it.context, bean.maWbId)
        }
    }
}
