feat: 添加设置模块和相关UI功能
- 新增settings_module.c实现设置菜单逻辑,包括蓝牙配对槽位管理和主题颜色选择 - 添加settings_mode_event.h/.c和settings_view_event.h/.c事件定义用于设置模式切换 - 创建settings_ui.h定义设置界面状态结构体和页面枚举 - 修改display_module.c集成设置UI显示逻辑,支持主界面和设置界面切换 - 在keyboard_core_module.c中添加设置活动状态检查,避免设置模式下键盘输入冲突 - 更新CMakeLists.txt包含新的源文件:settings_module.c、ui_settings.c及新事件文件 - 修改prj.conf调整LVGL内存池大小从16KB到32KB以支持更复杂UI渲染 - 移除BLE配对擦除相关配置选项并增加长按检测时间到1500毫秒 - 更新ui_main.c添加可见性控制函数用于界面切换
This commit is contained in:
59
src/events/settings_view_event.c
Normal file
59
src/events/settings_view_event.c
Normal file
@@ -0,0 +1,59 @@
|
||||
#include "settings_view_event.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 "?";
|
||||
}
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
static void profile_settings_view_event(struct log_event_buf *buf,
|
||||
const struct app_event_header *aeh)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
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"),
|
||||
profile_settings_view_event);
|
||||
|
||||
APP_EVENT_TYPE_DEFINE(settings_view_event,
|
||||
log_settings_view_event,
|
||||
&settings_view_event_info,
|
||||
APP_EVENT_FLAGS_CREATE(
|
||||
APP_EVENT_TYPE_FLAGS_INIT_LOG_ENABLE));
|
||||
Reference in New Issue
Block a user