package com.sw.platecabinet.activity import android.content.Context import android.content.Intent import com.sw.plate.utils.ToastUtils import com.sw.platecabinet.R import com.sw.platecabinet.databinding.ActivityMainBinding import com.sw.platecabinet.databinding.ItemTitleTimeBinding import com.sw.platecabinet.dialog.CustomDialog import com.sw.platecabinet.fragment.PlateCabinetFullFragment import com.sw.platecabinet.fragment.PlateOpenFragment import com.sw.platecabinet.fragment.SettingListFragment 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) // } fun start(context: Context, pageType: PageType, isScanCode: Boolean = false) { val intent = Intent(context, MainActivity::class.java) intent.putExtra(PARAM_PAGE_TYPE, pageType.name) intent.putExtra(PlateOpenFragment.IS_SCAN_CODE, isScanCode) context.startActivity(intent) } } override fun initialize() { val param = intent.getStringExtra(PARAM_PAGE_TYPE) // val isAdmin = intent.getBooleanExtra(PARAM_IS_ADMIN, false) val isScanCode = intent.getBooleanExtra(PlateOpenFragment.IS_SCAN_CODE, 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.PLATE_TIP -> PlateOpenFragment.newInstance(isScanCode) // 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() { if (pageType == PageType.SETTING_LIST) { startActivity(Intent(this, FunActivity::class.java)) } } 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 }