From 2e6a33b331599a1d3ab57ee3db54d4e8d355b6f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=8D=E5=90=83=E6=B2=B9=E7=82=B8=E9=B8=A1?= <1425962791@qq.com> Date: Sat, 11 Oct 2025 16:36:49 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E6=8C=89=E9=94=AE=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E8=81=9A=E7=84=A6=E9=80=89=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Power_Pico/User/GUI/screens/ui_SetPage.c | 58 ++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/Power_Pico/User/GUI/screens/ui_SetPage.c b/Power_Pico/User/GUI/screens/ui_SetPage.c index 2c7a4f3..cd72114 100644 --- a/Power_Pico/User/GUI/screens/ui_SetPage.c +++ b/Power_Pico/User/GUI/screens/ui_SetPage.c @@ -18,14 +18,64 @@ static lv_obj_t * ui_LabelLang = NULL; static lv_obj_t * ui_PanelAbout = NULL; static lv_obj_t * ui_LabelAbout = NULL; +static lv_obj_t * panels[4]; // 存储所有 panel 的指针 +static int current_panel_index = 0; // 当前选中的 panel 索引 + // event funtions #include "key.h" void ui_set_page_key_handler(uint8_t key_id) { + int panel_count = sizeof(panels) / sizeof(panels[0]); if(key_id == KEYB_NUM) { 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 @@ -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_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)