--[[ @module tsb_home_page @summary 调试宝主页 @version 1.0 @date 2026.03.04 @author 李一玮 @usage 本文件是调试宝的主页,提供所有功能演示的入口。 ]] local tsb_home_page = {} -- 页面UI元素 local main_container = nil local scroll_container = nil local common_ui = require("tsb_common_page") _G.current_tab = _G.current_tab or 0 -- 全局变量:存储当前是否为游客模式 local is_visitor_mode = false -- 选项卡分类 local tab_names = {"常用功能", "目标设备监测", "目标设备管理", "本机设备管理"} -- 演示模块列表(按选项卡分类) local demos_by_tab = { -- 常用功能 { {name = "报税口", src = "/luadb/bsk2.png", page = "tsb_bsk_page", color = 0x007AFF}, {name = "液位仪", src = "/luadb/ywy.png", page = "tsb_ywy_page", color = 0x4CAF50}, {name = "提枪信号", src = "/luadb/tq.png", page = "tsb_tq_page", color = 0xF44336}, {name = "编码器", src = "/luadb/bmq.png", page = "tsb_bmq_page", color = 0xFF9800}, {name = "简易示波器", src = "/luadb/sbq.png", page = "tsb_waveform_page", color = 0xFFAB91}, {name = "帮助", src = "/luadb/help.png", page = "tsb_help_page", color = 0xCE93D8}, }, -- 目标设备监测 { {name = "日志监测", src = "/luadb/rzjc.png", page = "tsb_devlog_page", color = 0x82B1FF}, {name = "485监测", src = "/luadb/4851.png", page = "tsb_485log_page", color = 0xA5D6A7}, {name = "232监测", src = "/luadb/232.png", page = "tsb_232log_page", color = 0xFFCCBC}, {name = "射频局域网监测", src = "/luadb/LoRa.png", page = "tsb_lora_page", color = 0xFFE082}, }, -- 目标设备管理 { {name = "固件包下载", src = "/luadb/gjb.png", page = "tsb_firm_page", color = 0x2196F3}, {name = "升级", src = "/luadb/upgrade.png", page = "tsb_upgrade_page", color = 0x66BB6A}, {name = "刷机", src = "/luadb/sj.png", page = "tsb_reflash_page", color = 0xF4511E}, {name = "MQTT配置", src = "/luadb/MQTT.png", page = "tsb_mqtt_page", color = 0xFFB74D}, {name = "信道切换", src = "/luadb/xd4.png", page = "tsb_channel_page", color = 0x7E57C2}, }, -- 本机设备管理 { {name = "本机信息", src = "/luadb/bjxx2.png", page = "tsb_devinfo_page", color = 0xB3E5FC}, {name = "本机升级", src = "/luadb/up1.png", page = "tsb_update_page", color = 0xA5D6A7}, {name = "本机日志", src = "/luadb/bjrz1.png", page = "tsb_log_page", color = 0xFFCCBC}, {name = "亮度管理", src = "/luadb/light.png", page = "tsb_light_page", color = 0xF2E2C5}, {name = "网络设置", src = "/luadb/wlan3.png", page = "tsb_wlan_page", color = 0xCE93D8}, } } -- 游客模式演示模块列表(按选项卡分类) local demos_by_tab_visitor = { -- 常用功能(全部保留) { {name = "报税口", src = "/luadb/bsk2.png", page = "tsb_bsk_page", color = 0x007AFF}, {name = "液位仪", src = "/luadb/ywy.png", page = "tsb_ywy_page", color = 0x4CAF50}, {name = "提枪信号", src = "/luadb/tq.png", page = "tsb_tq_page", color = 0xF44336}, {name = "编码器", src = "/luadb/bmq.png", page = "tsb_bmq_page", color = 0xFF9800}, {name = "简易示波器", src = "/luadb/sbq.png", page = "tsb_waveform_page", color = 0xFFAB91}, {name = "帮助", src = "/luadb/help.png", page = "tsb_help_page", color = 0xCE93D8}, }, -- 目标设备监测(只保留485监测) { {name = "485监测", src = "/luadb/4851.png", page = "tsb_485log_page", color = 0xA5D6A7}, }, -- 目标设备管理(全部隐藏) {}, -- 本机设备管理(只保留本机信息和亮度管理) { {name = "本机信息", src = "/luadb/bjxx2.png", page = "tsb_devinfo_page", color = 0xB3E5FC}, {name = "亮度管理", src = "/luadb/light.png", page = "tsb_shutdown_page", color = 0xFFF4E2}, } } -- 创建主页UI function tsb_home_page.create_ui() -- 创建主容器 main_container = airui.container({ x = 0, y = 0, w = 480, h = 320, color = 0xF8F9FA, }) -- 标题栏 local title_bar = airui.container({ parent = main_container, x = 0, y = 0, w = 480, h = 30, color = 0x2E6EF4, }) local battery_label = common_ui.add_battery_display(title_bar) airui.label({ parent = title_bar, text = "主界面", x = 210, y = 8, w = 80, h = 20, font_size = 16, color = 0xFFFFFF, }) -- 返回按钮(仅首页的返回按钮没有调用common_page中的函数) -- local back_btn = airui.button({ -- parent = title_bar, -- x = 10, -- y = 3, -- w = 45, -- h = 25, -- text = "返回", -- on_click = function() -- tsb_home_page.cleanup() -- go_back() -- end -- }) local back_img = airui.image({ parent = parent, x = 5, y = 4, w = 20, h = 25, src = "/luadb/back1.png", zoom = 256, opacity = 255, on_click = function() tsb_home_page.cleanup() go_back() end }) local back_label = airui.label({ parent = parent, text = "返回", x = 22, y = 9, w = 45, h = 20, font_size = 15, color = 0xFFFFFF, on_click = function() tsb_home_page.cleanup() go_back() end }) local person_img = airui.image({ parent = title_bar, x = 70, y = 3, w = 20, h = 25, src = "/luadb/person3.png", zoom = 170, opacity = 255, }) local person_msg = airui.label({ parent = title_bar, text = is_visitor_mode and "游客模式" or "lyw...(管理员)", x = 95, y = 8, w = 100, h = 20, font_size = 14, color = 0xFFFFFF, }) -- 滚动容器 scroll_container = airui.container({ parent = main_container, x = 0, y = 30, w = 480, h = 270, color = 0xF8F9FA, }) -- 创建选项卡组件 local tabview = airui.tabview({ parent = scroll_container, x = 0, y = 0, w = 480, h = 270, tabs = tab_names, active = _G.current_tab, page_style = { tabbar_size = 20, pad = { method = airui.TABVIEW_PAD_ALL, value = 5 }, bg_opa = 200, -- 设置背景透明度,0-255 }, }) -- 为每个选项卡添加内容 local demos_list = is_visitor_mode and demos_by_tab_visitor or demos_by_tab for i, demos in ipairs(demos_list) do local tab_content = tabview:get_content(i - 1) if tab_content then -- 创建网格布局的演示按钮 local button_width = 150 local button_height = 80 local columns = 3 local padding = 5 local y_offset = 10 for j, demo in ipairs(demos) do local col = (j - 1) % columns local row = math.floor((j - 1) / columns) local x = padding + col * (button_width + padding) local y = y_offset + row * (button_height + padding) -- 创建按钮容器(卡片样式) local card = airui.container({ parent = tab_content, x = x, y = y, w = button_width, h = button_height, color = demo.color, radius = 8, }) -- 图标或图片 if demo.src then -- 使用图片 airui.image({ parent = card, x = 5, y = 7, w = 50, h = 50, src = demo.src, zoom = 200, opacity = 255, }) elseif demo.icon then -- 使用图标 airui.label({ parent = card, text = demo.icon, x = 15, y = 20, w = 40, h = 40, font_size = 24, -- 增大图标大小 }) end -- 演示名称标签 airui.label({ parent = card, text = demo.name, x = 50, y = 25, w = button_width - 60, h = 40, font_size = 14, -- 调整字体大小 on_click = function() _G.current_tab = i - 1 _G.show_page(demo.page) end }) end end end -- 底部状态栏 common_ui.create_status_bar(main_container) end -- 初始化页面 function tsb_home_page.init(params) -- 检查是否为游客模式 is_visitor_mode = params and params.visitor_mode or false log.info("tsb_home_page", "初始化页面,游客模式:", is_visitor_mode) tsb_home_page.create_ui() end -- 清理页面 function tsb_home_page.cleanup() -- 清理UI元素 main_container = nil scroll_container = nil end return tsb_home_page