Files
TTGO_TWatch_Library/examples/demo/LilyGoGui/app_configuration.cpp
2023-06-13 15:45:02 +08:00

80 lines
3.1 KiB
C++

#include "app_configuration.h"
#include "Arduino.h"
#include <LilyGoLib.h>
static void sleep_event_cb(lv_event_t *e);
extern LilyGoLib watch;
static void slider_event_cb(lv_event_t *e)
{
lv_obj_t *slider = lv_event_get_target(e);
lv_obj_t *slider_label = (lv_obj_t *)lv_event_get_user_data(e);
uint8_t level = (uint8_t)lv_slider_get_value(slider);
int percentage = map(level, 0, 255, 0, 100);
lv_label_set_text_fmt(slider_label, "%u%%", percentage);
watch.setBrightness(level);
}
void app_configuration_load(lv_obj_t *cont) {
lv_obj_t *btn = lv_btn_create(cont);
lv_obj_set_size(btn, 100, 50);
lv_obj_align(btn, LV_ALIGN_CENTER, 0, -40);
lv_obj_set_style_outline_color(btn, lv_color_white(), LV_STATE_FOCUS_KEY);
lv_obj_set_style_bg_color(btn, lv_color_white(), 0);
lv_obj_t *label = lv_label_create(btn);
lv_obj_center(label);
lv_obj_set_style_text_color(label, lv_color_black(), 0);
lv_label_set_text(label, "Deep Sleep");
lv_obj_add_event_cb(btn, sleep_event_cb, LV_EVENT_CLICKED, NULL);
static lv_style_t style_indicator;
static lv_style_t style_knob;
/*Create a transition*/
static const lv_style_prop_t props[] = {LV_STYLE_BG_COLOR, LV_STYLE_PROP_INV};
static lv_style_transition_dsc_t transition_dsc;
lv_style_transition_dsc_init(&transition_dsc, props, lv_anim_path_linear, 300, 0, NULL);
lv_style_init(&style_indicator);
lv_style_set_bg_opa(&style_indicator, LV_OPA_COVER);
lv_style_set_bg_color(&style_indicator, lv_color_make(0xff, 0xff, 0xff));
lv_style_set_radius(&style_indicator, LV_RADIUS_CIRCLE);
lv_style_set_transition(&style_indicator, &transition_dsc);
lv_style_init(&style_knob);
lv_style_set_bg_opa(&style_knob, LV_OPA_COVER);
lv_style_set_bg_color(&style_knob, lv_color_make(0xff, 0xff, 0xff));
lv_style_set_border_color(&style_knob, lv_palette_darken(LV_PALETTE_YELLOW, 2));
lv_style_set_border_width(&style_knob, 2);
lv_style_set_radius(&style_knob, LV_RADIUS_CIRCLE);
lv_style_set_pad_all(&style_knob, 6); /*Makes the knob larger*/
lv_style_set_transition(&style_knob, &transition_dsc);
/*Create a slider and add the style*/
lv_obj_t *slider = lv_slider_create(cont);
lv_obj_set_size(slider, 200, 30);
lv_slider_set_range(slider, 5, 255);
lv_obj_add_style(slider, &style_indicator, LV_PART_INDICATOR);
lv_obj_add_style(slider, &style_knob, LV_PART_KNOB);
lv_obj_align(slider, LV_ALIGN_CENTER, 0, 40);
lv_slider_set_value(slider, watch.getBrightness(), LV_ANIM_OFF);
/*Create a label below the slider*/
lv_obj_t *slider_label = lv_label_create(slider);
lv_label_set_text_fmt(slider_label, "%u%%", watch.getBrightness());
lv_obj_set_style_text_color(slider_label, lv_color_white(), LV_PART_MAIN);
lv_obj_add_event_cb(slider, slider_event_cb, LV_EVENT_VALUE_CHANGED, slider_label);
lv_obj_set_style_text_color(slider_label, lv_color_black(), 0);
lv_obj_center(slider_label);
}
void lowPowerEnergyHandler();
static void sleep_event_cb(lv_event_t *e) {
lowPowerEnergyHandler();
}
app_t app_config = {
.setup_func_cb = app_configuration_load,
.exit_func_cb = nullptr,
.user_data = nullptr,
};