package com.sw.platecabinet.activity import android.content.Context import android.content.Intent import com.sw.platecabinet.MyApp import com.sw.platecabinet.R import com.sw.platecabinet.databinding.ActivityMainBinding import com.sw.platecabinet.databinding.ItemTitleTimeBinding import com.sw.platecabinet.fragment.PlateCabinetFullFragment import com.sw.platecabinet.fragment.PlateOpenFragment import com.sw.platecabinet.fragment.SettingListFragment import com.sw.platecabinet.model.response.EquipmentUserInfo import com.sw.platecabinet.utils.FragmentHelper typealias Callback = (String) -> Unit /** * 主界面,内部嵌套framgnet使用 */ class MainActivity : BaseActivity() { private lateinit var fragmentHelper: FragmentHelper private var pageType = PageType.SETTING_LIST private var callback: Callback? = null override fun inflateViewBinding(): ActivityMainBinding { return ActivityMainBinding.inflate(layoutInflater) } override fun inflateTitleBinding(): ItemTitleTimeBinding { return binding.includeHeader } // 静态启动方法 companion object { private const val PARAM_PAGE_TYPE = "pageType" private const val PARAM_EQUIPMENT_INFO = "equipmentUserInfo" private const val PARAM_IS_ADMIN = "isAdmin" fun start( context: Context, pageType: PageType, equipmentUserInfo: EquipmentUserInfo? = null, isAdmin: Boolean = false, block:()->Unit={} ) { val intent = Intent(context, MainActivity::class.java) intent.putExtra(PARAM_PAGE_TYPE, pageType.name) intent.putExtra(PARAM_EQUIPMENT_INFO, equipmentUserInfo) intent.putExtra(PARAM_IS_ADMIN, isAdmin) context.startActivity(intent) } } override fun initialize() { val param = intent.getStringExtra(PARAM_PAGE_TYPE) val isAdmin = intent.getBooleanExtra(PARAM_IS_ADMIN, false) val equipmentUserInfo = intent.getParcelableExtra(PARAM_EQUIPMENT_INFO) pageType = param?.let { PageType.valueOf(param) } ?: PageType.SETTING_LIST fragmentHelper = FragmentHelper(supportFragmentManager, R.id.fragment_container) val page = when (pageType) { PageType.SETTING_LIST -> SettingListFragment() // PageType.BIND_PLATE -> BindPlateFragment.newInstance(equipmentUserInfo) PageType.PLATE_TIP -> PlateOpenFragment.newInstance(equipmentUserInfo, isAdmin) // PageType.UNBIND_PLATE -> UnBindPlateFragment.newInstance(equipmentUserInfo) PageType.PLATE_CABINET_FULL -> PlateCabinetFullFragment() else -> null } page?.let { fragmentHelper.addFragment(it) } } override fun onLeftDoubleClick() { if (pageType == PageType.SETTING_LIST) { finish() } } override fun onRightDoubleClick() { } override fun handleScanKeyInfo(scanInfo: String) { if (callback != null) { callback!!.invoke(scanInfo) } } fun registerKeyEventInfo(callback: Callback) { this.callback = callback } override fun registerDataChange() { super.registerDataChange() } } /** * 界面类型 */ enum class PageType { /** * 提示 */ PLATE_TIP, /** * 设置列表 */ SETTING_LIST, /** * 绑定餐盘 */ BIND_PLATE, /** * 解绑餐盘 */ UNBIND_PLATE, /** * 餐盘柜已满 */ PLATE_CABINET_FULL }