加入按键切换聚焦选项

This commit is contained in:
不吃油炸鸡
2025-10-11 16:36:49 +08:00
parent f8ff9ffaa3
commit 2e6a33b331

View File

@@ -18,14 +18,64 @@ static lv_obj_t * ui_LabelLang = NULL;
static lv_obj_t * ui_PanelAbout = NULL; static lv_obj_t * ui_PanelAbout = NULL;
static lv_obj_t * ui_LabelAbout = NULL; static lv_obj_t * ui_LabelAbout = NULL;
static lv_obj_t * panels[4]; // 存储所有 panel 的指针
static int current_panel_index = 0; // 当前选中的 panel 索引
// event funtions // event funtions
#include "key.h" #include "key.h"
void ui_set_page_key_handler(uint8_t key_id) void ui_set_page_key_handler(uint8_t key_id)
{ {
int panel_count = sizeof(panels) / sizeof(panels[0]);
if(key_id == KEYB_NUM) { if(key_id == KEYB_NUM) {
PageManager_next(); PageManager_next();
} }
if (key_id == KEYL_NUM) {
lv_obj_clear_state(panels[current_panel_index], LV_STATE_CHECKED);
current_panel_index = (current_panel_index - 1 + panel_count) % panel_count;
lv_obj_add_state(panels[current_panel_index], LV_STATE_CHECKED);
lv_obj_scroll_to_view(panels[current_panel_index], LV_ANIM_ON);
} else if (key_id == KEYR_NUM) {
lv_obj_clear_state(panels[current_panel_index], LV_STATE_CHECKED);
current_panel_index = (current_panel_index + 1) % panel_count;
lv_obj_add_state(panels[current_panel_index], LV_STATE_CHECKED);
lv_obj_scroll_to_view(panels[current_panel_index], LV_ANIM_ON);
} else if (key_id == KEYY_NUM) {
if(current_panel_index == 0) { // Screen Brightness
int16_t slider_value = lv_slider_get_value(ui_SliderBL);
slider_value += 10;
if(slider_value > 100) slider_value = 100;
lv_slider_set_value(ui_SliderBL, slider_value, LV_ANIM_ON);
} else if(current_panel_index == 1) { // Key Sound
if(lv_obj_has_state(ui_SwitchKS, LV_STATE_CHECKED)) {
lv_obj_clear_state(ui_SwitchKS, LV_STATE_CHECKED);
} else {
lv_obj_add_state(ui_SwitchKS, LV_STATE_CHECKED);
}
} else if(current_panel_index == 2) { // Language
// do nothing
} else if(current_panel_index == 3) { // About
// do nothing
}
} else if (key_id == KEYN_NUM) {
if(current_panel_index == 0) { // Screen Brightness
int16_t slider_value = lv_slider_get_value(ui_SliderBL);
slider_value -= 10;
if(slider_value < 0) slider_value = 0;
lv_slider_set_value(ui_SliderBL, slider_value, LV_ANIM_ON);
} else if(current_panel_index == 1) { // Key Sound
if(lv_obj_has_state(ui_SwitchKS, LV_STATE_CHECKED)) {
lv_obj_clear_state(ui_SwitchKS, LV_STATE_CHECKED);
} else {
lv_obj_add_state(ui_SwitchKS, LV_STATE_CHECKED);
}
} else if(current_panel_index == 2) { // Language
// do nothing
} else if(current_panel_index == 3) { // About
// do nothing
}
}
} }
// build funtions // build funtions
@@ -127,6 +177,14 @@ void ui_SetPage_screen_init(void)
lv_label_set_text(ui_LabelAbout, "About\nPower-Pico\nA uA current meter\nV 1.0.0"); lv_label_set_text(ui_LabelAbout, "About\nPower-Pico\nA uA current meter\nV 1.0.0");
lv_obj_set_style_text_font(ui_LabelAbout, &lv_font_montserrat_16, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_text_font(ui_LabelAbout, &lv_font_montserrat_16, LV_PART_MAIN | LV_STATE_DEFAULT);
//
panels[0] = ui_PanelBL;
panels[1] = ui_PanelKS;
panels[2] = ui_PanelLang;
panels[3] = ui_PanelAbout;
lv_obj_add_state(panels[current_panel_index], LV_STATE_CHECKED);
lv_obj_scroll_to_view(panels[current_panel_index], LV_ANIM_ON);
} }
void ui_SetPage_screen_destroy(void) void ui_SetPage_screen_destroy(void)