feat(ui): 重构设置界面为页面控制器架构
- 添加新的UI页面基础架构(ui_page.h),包含页面操作接口 - 创建设置页面控制器(ui_settings_controller.h/.c)来管理页面导航 - 实现具体的设置页面类型:根页面、BLE页面、主题页面 - 修改display_module.c以使用新的页面系统替代旧的状态机 - 移除过时的settings_ui.h头文件和相关状态结构 - 更新事件处理逻辑以使用页面指针而非状态数据传递 - 修改主界面实现以适配统一的页面接口标准
This commit is contained in:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user