package com.lukouguoji.gjc.activity

import android.content.Context
import android.content.Intent
import android.os.Bundle
import androidx.databinding.ObservableBoolean
import com.lukouguoji.gjc.R
import com.lukouguoji.gjc.databinding.ActivityIntExpArriveSubOrderBinding
import com.lukouguoji.gjc.viewModel.IntExpArriveSubOrderViewModel
import com.lukouguoji.module_base.base.BaseBindingActivity
import com.lukouguoji.module_base.bean.GjcHaWb
import com.lukouguoji.module_base.common.Constant
import com.lukouguoji.module_base.ktx.commonAdapter
import com.lukouguoji.module_base.ktx.refresh

/**
 * 国际出港运抵-分单明细页（5.5寸手机版专属新页，平板端无对应页面）
 *
 * 数据来自主列表页已加载的 haWbList（Intent 传入），零新增请求。
 * 对应设计稿 documents/5.5寸手持端设计文件/04_出港运抵/suborder.html。
 */
class IntExpArriveSubOrderActivity :
    BaseBindingActivity<ActivityIntExpArriveSubOrderBinding, IntExpArriveSubOrderViewModel>() {

    override fun layoutId() = R.layout.activity_int_exp_arrive_sub_order
    override fun viewModelClass() = IntExpArriveSubOrderViewModel::class.java

    /** 筛选弹层显隐（仅 UI 状态） */
    val filterPanelVisible = ObservableBoolean(false)

    override fun initOnCreate(savedInstanceState: Bundle?) {
        setBackArrow("分单明细")
        binding.viewModel = viewModel
        binding.activity = this

        viewModel.initOnCreated(intent)

        // 监听数据变化刷新列表
        viewModel.displayList.observe(this) { binding.rv.refresh(it) }
    }

    /** 子项选中状态变化后回调（由 ViewHolder 调用） */
    fun onItemCheckChanged() {
        viewModel.onItemCheckChanged()
    }

    /** 全选按钮点击：切换全部选中状态后强制刷新列表（checked 为原地修改，不触发 LiveData） */
    fun checkAllClick() {
        viewModel.checkAllClick()
        binding.rv.commonAdapter()?.notifyDataSetChanged()
    }

    /** 卡片长按：展开操作浮层（View.OnLongClickListener 要求返回 Boolean） */
    fun showActionMenu(bean: GjcHaWb): Boolean {
        bean.actionMenuVisible.set(true)
        return true
    }

    /** 点击浮层遮罩：收起操作浮层 */
    fun hideActionMenu(bean: GjcHaWb) {
        bean.actionMenuVisible.set(false)
    }

    /** 长按菜单「重置」（单条） */
    fun resetSingleClick(bean: GjcHaWb) {
        bean.actionMenuVisible.set(false)
        viewModel.resetSingleClick(bean)
    }

    /** 长按菜单「回执」（单条）：复用回执只读页，仅传当前分单 */
    fun openReceipt(bean: GjcHaWb) {
        bean.actionMenuVisible.set(false)
        IntExpArriveReceiptActivity.start(this, viewModel.wbNo, arrayListOf(bean))
    }

    fun toggleFilterPanel() {
        filterPanelVisible.set(!filterPanelVisible.get())
    }

    fun resetFilter() {
        viewModel.hnoFilter.value = ""
    }

    fun confirmFilter() {
        filterPanelVisible.set(false)
        viewModel.searchClick()
    }

    companion object {
        @JvmStatic
        fun start(context: Context, wbNo: String, haWbList: ArrayList<GjcHaWb>) {
            val starter = Intent(context, IntExpArriveSubOrderActivity::class.java)
                .putExtra(IntExpArriveSubOrderViewModel.KEY_WB_NO, wbNo)
                .putExtra(Constant.Key.DATA, haWbList)
            context.startActivity(starter)
        }
    }
}
