feat: 实现摇一摇导航功能
This commit is contained in:
@@ -3,6 +3,8 @@
|
||||
#include "ui_handlers.h"
|
||||
|
||||
static lv_obj_t *s_notif_switch;
|
||||
static lv_obj_t *s_shake_nav_switch;
|
||||
static lv_obj_t *s_shake_sens_dropdown;
|
||||
static lv_obj_t *s_brightness_slider;
|
||||
static lv_obj_t *s_brightness_pct_label;
|
||||
static lv_obj_t *s_volume_slider;
|
||||
@@ -43,6 +45,8 @@ static lv_obj_t *create_settings_body(lv_obj_t *content)
|
||||
void load_system_settings(lv_obj_t *content, const settings_data_t *data)
|
||||
{
|
||||
s_notif_switch = NULL;
|
||||
s_shake_nav_switch = NULL;
|
||||
s_shake_sens_dropdown = NULL;
|
||||
|
||||
create_status_bar(content, "System Settings");
|
||||
lv_obj_t *body = create_settings_body(content);
|
||||
@@ -62,6 +66,35 @@ void load_system_settings(lv_obj_t *content, const settings_data_t *data)
|
||||
LV_EVENT_VALUE_CHANGED,
|
||||
(void *)(intptr_t)SETTINGS_FIELD_NOTIFICATION);
|
||||
|
||||
lv_obj_t *shake_nav_label = lv_label_create(body);
|
||||
lv_label_set_text(shake_nav_label, "Shake Navigation");
|
||||
lv_obj_set_pos(shake_nav_label, 4, 40);
|
||||
lv_obj_set_size(shake_nav_label, 120, 28);
|
||||
|
||||
s_shake_nav_switch = lv_switch_create(body);
|
||||
lv_obj_set_pos(s_shake_nav_switch, 180, 40);
|
||||
lv_obj_set_size(s_shake_nav_switch, 40, 28);
|
||||
if (data->shake_nav_enabled) {
|
||||
lv_obj_add_state(s_shake_nav_switch, LV_STATE_CHECKED);
|
||||
}
|
||||
lv_obj_add_event_cb(s_shake_nav_switch, settings_on_value_changed,
|
||||
LV_EVENT_VALUE_CHANGED,
|
||||
(void *)(intptr_t)SETTINGS_FIELD_SHAKE_NAV);
|
||||
|
||||
lv_obj_t *shake_sens_label = lv_label_create(body);
|
||||
lv_label_set_text(shake_sens_label, "Shake Sensitivity");
|
||||
lv_obj_set_pos(shake_sens_label, 4, 76);
|
||||
lv_obj_set_size(shake_sens_label, 120, 28);
|
||||
|
||||
s_shake_sens_dropdown = lv_dropdown_create(body);
|
||||
lv_obj_set_pos(s_shake_sens_dropdown, 120, 76);
|
||||
lv_obj_set_size(s_shake_sens_dropdown, 100, 28);
|
||||
lv_dropdown_set_options(s_shake_sens_dropdown, "Low\nMed\nHigh");
|
||||
lv_dropdown_set_selected(s_shake_sens_dropdown, data->shake_sensitivity);
|
||||
lv_obj_add_event_cb(s_shake_sens_dropdown, settings_on_value_changed,
|
||||
LV_EVENT_VALUE_CHANGED,
|
||||
(void *)(intptr_t)SETTINGS_FIELD_SHAKE_SENS);
|
||||
|
||||
lv_obj_t *reset_btn = lv_button_create(body);
|
||||
lv_obj_set_pos(reset_btn, 4, 112);
|
||||
lv_obj_set_size(reset_btn, 100, 28);
|
||||
@@ -170,6 +203,14 @@ void settings_tabs_collect(settings_tab_t tab, settings_data_t *out)
|
||||
out->notification_enabled =
|
||||
lv_obj_has_state(s_notif_switch, LV_STATE_CHECKED);
|
||||
}
|
||||
if (s_shake_nav_switch != NULL) {
|
||||
out->shake_nav_enabled =
|
||||
lv_obj_has_state(s_shake_nav_switch, LV_STATE_CHECKED);
|
||||
}
|
||||
if (s_shake_sens_dropdown != NULL) {
|
||||
out->shake_sensitivity =
|
||||
(shake_sensitivity_t)lv_dropdown_get_selected(s_shake_sens_dropdown);
|
||||
}
|
||||
break;
|
||||
case SETTINGS_TAB_DISPLAY:
|
||||
if (s_brightness_slider != NULL) {
|
||||
|
||||
Reference in New Issue
Block a user