| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306 |
- --[[
- @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
|