package com.stec.cmd import com.stec.cmd.feature.collect.CollectWorkspaceFragment import com.stec.cmd.feature.home.ProjectWorkspaceFragment import com.stec.cmd.feature.mine.MineFragment import com.stec.cmd.feature.stats.StatsWorkspaceFragment import com.stec.cmd.feature.task.TaskWorkspaceFragment /** * 底部导航 5 Tab 与业务模块(功能明细表编号)的挂载点注册中心。 * * S1+ 挂载业务页面的方式:把对应 [MountItem.fragmentClass] 从占位 Fragment * 换成业务 Fragment 即可,导航壳(MainActivity)零改动;新增 Tab 时扩展 [Tab]。 * 挂载映射依据《安卓客户端功能明细表》: * 首页=M2、任务=M3、采集=M4+M5、统计=M6、我的=M1。 */ object FeatureMount { /** 底部导航 Tab(itemId 与 res/menu/bottom_nav_menu.xml 一一对应)。 */ enum class Tab(val itemId: Int, val labelRes: Int) { HOME(R.id.nav_home, R.string.tab_home), TASK(R.id.nav_task, R.string.tab_task), COLLECT(R.id.nav_collect, R.string.tab_collect), STATS(R.id.nav_stats, R.string.tab_stats), MINE(R.id.nav_mine, R.string.tab_mine), } /** 单个 Tab 的挂载项。 */ data class MountItem( val tab: Tab, val fragmentClass: Class, val moduleTag: String, ) /** 挂载注册表:S1+ 替换 fragmentClass 即完成业务页挂载。 */ val mounts: List = listOf( MountItem(Tab.HOME, ProjectWorkspaceFragment::class.java, "M2 项目工作台"), MountItem(Tab.TASK, TaskWorkspaceFragment::class.java, "M3 任务管理"), MountItem(Tab.COLLECT, CollectWorkspaceFragment::class.java, "M4+M5 数据采集"), MountItem(Tab.STATS, StatsWorkspaceFragment::class.java, "M6 统计与上传"), MountItem(Tab.MINE, MineFragment::class.java, "M1 我的"), ) /** 按 menu itemId 取挂载项;未知 id 返回 null(容错)。 */ fun byItemId(itemId: Int): MountItem? = mounts.firstOrNull { it.tab.itemId == itemId } }