feat(ui): 重构设置界面为页面控制器架构

- 添加新的UI页面基础架构(ui_page.h),包含页面操作接口
- 创建设置页面控制器(ui_settings_controller.h/.c)来管理页面导航
- 实现具体的设置页面类型:根页面、BLE页面、主题页面
- 修改display_module.c以使用新的页面系统替代旧的状态机
- 移除过时的settings_ui.h头文件和相关状态结构
- 更新事件处理逻辑以使用页面指针而非状态数据传递
- 修改主界面实现以适配统一的页面接口标准
This commit is contained in:
2026-04-23 18:46:55 +08:00
parent fbdc5426be
commit 48968e7880
18 changed files with 828 additions and 625 deletions

View File

@@ -1,30 +1,14 @@
#include "settings_view_event.h"
#include <stdint.h>
static const char *page_name(enum settings_ui_page page)
{
switch (page) {
case SETTINGS_UI_PAGE_ROOT:
return "root";
case SETTINGS_UI_PAGE_BLE:
return "ble";
case SETTINGS_UI_PAGE_THEME:
return "theme";
default:
return "?";
}
}
#include "settings_view_event.h"
static void log_settings_view_event(const struct app_event_header *aeh)
{
const struct settings_view_event *event =
cast_settings_view_event(aeh);
APP_EVENT_MANAGER_LOG(
aeh,
"active:%u page:%s root_sel:%u ble_sel:%u theme_sel:%u slot:%u",
event->state.active, page_name(event->state.page),
event->state.root_selected, event->state.ble_selected,
event->state.theme_selected, event->state.active_ble_slot);
APP_EVENT_MANAGER_LOG(aeh, "page:%p animate:%u",
event->page, event->animate);
}
static void profile_settings_view_event(struct log_event_buf *buf,
@@ -33,23 +17,13 @@ static void profile_settings_view_event(struct log_event_buf *buf,
const struct settings_view_event *event =
cast_settings_view_event(aeh);
nrf_profiler_log_encode_uint8(buf, event->state.active ? 1U : 0U);
nrf_profiler_log_encode_uint8(buf, event->state.page);
nrf_profiler_log_encode_uint8(buf, event->state.root_selected);
nrf_profiler_log_encode_uint8(buf, event->state.ble_selected);
nrf_profiler_log_encode_uint8(buf, event->state.theme_selected);
nrf_profiler_log_encode_uint8(buf, event->state.active_ble_slot);
nrf_profiler_log_encode_uint32(buf, (uint32_t)(uintptr_t)event->page);
nrf_profiler_log_encode_uint8(buf, event->animate ? 1U : 0U);
}
APP_EVENT_INFO_DEFINE(settings_view_event,
ENCODE(NRF_PROFILER_ARG_U8,
NRF_PROFILER_ARG_U8,
NRF_PROFILER_ARG_U8,
NRF_PROFILER_ARG_U8,
NRF_PROFILER_ARG_U8,
NRF_PROFILER_ARG_U8),
ENCODE("active", "page", "root_selected", "ble_selected",
"theme_selected", "active_ble_slot"),
ENCODE(NRF_PROFILER_ARG_U32, NRF_PROFILER_ARG_U8),
ENCODE("page", "animate"),
profile_settings_view_event);
APP_EVENT_TYPE_DEFINE(settings_view_event,