1384 lines
49 KiB
C
Executable File
1384 lines
49 KiB
C
Executable File
/**
|
|
* @file main
|
|
*
|
|
*/
|
|
|
|
/*********************
|
|
* INCLUDES
|
|
*********************/
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <unistd.h>
|
|
|
|
#include "lvgl/lvgl.h"
|
|
#include "lvgl/demos/widgets/lv_demo_widgets.h"
|
|
#include "lv_drivers/win32drv/win32drv.h"
|
|
#include <windows.h>
|
|
|
|
/*******************************字体加载**********************************/
|
|
LV_FONT_DECLARE(lv_font_heiti24)
|
|
LV_FONT_DECLARE(lv_font_heiti100)
|
|
|
|
/*******************************屏幕定义、参数**********************************/
|
|
#define top() lv_scr_act()
|
|
#define scr_act_width() lv_obj_get_width(lv_scr_act())
|
|
#define scr_act_height() lv_obj_get_height(lv_scr_act())
|
|
|
|
/*******************************外部图片定义**********************************/
|
|
#define return_img "E:return.png"
|
|
#define home_img "E:home.png"
|
|
#define vol_img "E:vol.png"
|
|
#define light_img "E:light.png"
|
|
#define symbol_img "E:dropdown.png"
|
|
#define warn_img "E:warning.png"
|
|
#define wait_img "E:wait.png"
|
|
#define succ_img "E:success.png"
|
|
#define fail_img "E:fail.png"
|
|
#define accept_img "E:accept.png"
|
|
#define refuse_img "E:refuse.png"
|
|
#define dial_img "E:dial.png"
|
|
#define record_img "E:record.png"
|
|
#define onrecord_img "E:onrecord.png"
|
|
|
|
static void hal_init(void);
|
|
|
|
/*******************************经常使用到的部件采用样式初始化**********************************/
|
|
static lv_style_t btn_style;
|
|
static lv_style_t btn_text_style;
|
|
static lv_style_t scr_style;
|
|
static lv_style_t return_style;
|
|
static lv_style_t label_style;
|
|
static lv_style_t list_style;
|
|
|
|
/*******************************按键**********************************/
|
|
static lv_obj_t *btn_set;
|
|
static lv_obj_t *btn_notify;
|
|
static lv_obj_t *btn_msg;
|
|
static lv_obj_t *btn_dial;
|
|
static lv_obj_t *btn_yes;
|
|
static lv_obj_t *btn_no;
|
|
static lv_obj_t *btn_accept;
|
|
static lv_obj_t *btn_refuse;
|
|
static lv_obj_t *btn_app_acpt;
|
|
static lv_obj_t *btn_app_rfse;
|
|
static lv_obj_t *btn_record;
|
|
static lv_obj_t *btn_return;
|
|
static lv_obj_t *btn_home;
|
|
static lv_obj_t *btn_return_set;
|
|
|
|
/*******************************滑块**********************************/
|
|
static lv_obj_t *slider_vol;
|
|
static lv_obj_t *slider_light;
|
|
|
|
/*******************************文本、定时器、图片**********************************/
|
|
static lv_obj_t *label_yes;
|
|
static lv_timer_t *timer;
|
|
static lv_obj_t *img_record;
|
|
static lv_obj_t *img_onrecord;
|
|
|
|
/*******************************列表**********************************/
|
|
static lv_obj_t *msg_list;
|
|
static lv_obj_t *notify_list;
|
|
static lv_obj_t *setting_list;
|
|
static lv_obj_t *door_setting_list;
|
|
static lv_obj_t *language_list;
|
|
|
|
/*******************************日历滚轮**********************************/
|
|
static lv_obj_t *roller_year;
|
|
static lv_obj_t *roller_month;
|
|
static lv_obj_t *roller_day;
|
|
|
|
/*******************************界面**********************************/
|
|
static void main_gui(void);
|
|
static void msg_gui(void);
|
|
static void notify_gui(void);
|
|
static void dial_gui(void);
|
|
static void setting_gui(void);
|
|
static void door_gui(void);
|
|
static void language_gui(void);
|
|
static void time_gui(void);
|
|
static void wificonfg_gui(void);
|
|
static void recovery_gui(void);
|
|
static void bond_gui(void);
|
|
static void info_gui(void);
|
|
|
|
/*******************************回调函数**********************************/
|
|
static void main_event_cb(lv_event_cb_t *e);
|
|
static void msg_event_cb(lv_event_cb_t *e);
|
|
static void noitify_event_cb(lv_event_cb_t *e);
|
|
static void dial_event_cb(lv_event_cb_t *e);
|
|
static void setting_event_cb(lv_event_cb_t *e);
|
|
static void door_event_cb(lv_event_cb_t *e);
|
|
static void language_event_cb(lv_event_cb_t *e);
|
|
static void time_event_cb(lv_event_cb_t *e);
|
|
static void recovery_event_cb(lv_event_cb_t *e);
|
|
static void wificonfg_event_cb(lv_event_cb_t *e);
|
|
static void bond_event_cb(lv_event_cb_t *e);
|
|
static void info_event_cb(lv_event_cb_t *e);
|
|
static void info_renew_event_cb(lv_event_cb_t *e);
|
|
static void timer_callback(lv_timer_t *timer);
|
|
|
|
/*******************************变量**********************************/
|
|
typedef struct
|
|
{
|
|
int year;
|
|
int month;
|
|
int day;
|
|
int hour;
|
|
int min;
|
|
char *weekday;
|
|
}lv_time_t;
|
|
|
|
static uint32_t cntdown;
|
|
|
|
/*******************************封装功能函数**********************************/
|
|
static void lv_obj_show_battery(int batterylevel, lv_obj_t *parent);
|
|
static void lv_obj_show_wifi(int connect_state, lv_obj_t *parent);
|
|
static void lv_obj_show_time(lv_time_t *time, lv_obj_t *parent);
|
|
|
|
|
|
|
|
|
|
/*样式初始化,只初始化一次就行*/
|
|
static void lv_obj_style_init(void)
|
|
{
|
|
/*创建btn_style*/
|
|
lv_style_init(&btn_style);
|
|
lv_style_set_radius(&btn_style, 25);
|
|
lv_style_set_bg_color(&btn_style, lv_color_hex(0x000000));
|
|
lv_style_set_bg_opa(&btn_style, LV_OPA_20);
|
|
lv_style_set_border_opa(&btn_style, LV_OPA_TRANSP);
|
|
lv_style_set_border_width(&btn_style, 0);
|
|
|
|
/*创建btn_text_style*/
|
|
lv_style_init(&btn_text_style);
|
|
lv_style_set_text_color(&btn_text_style, lv_color_hex(0xffffff));
|
|
lv_style_set_opa(&btn_text_style, LV_OPA_80);
|
|
lv_style_set_align(&btn_text_style, LV_ALIGN_CENTER);
|
|
|
|
/*创建scr_style*/
|
|
lv_style_init(&scr_style);
|
|
lv_style_set_width(&scr_style, 720);
|
|
lv_style_set_height(&scr_style, 1280);
|
|
lv_style_set_text_font(&scr_style, &lv_font_heiti24);
|
|
lv_style_set_bg_color(&scr_style, lv_color_hex(0xE0FFFF));
|
|
|
|
/*创建return_style*/
|
|
lv_style_init(&return_style);
|
|
lv_style_set_width(&return_style, 38);
|
|
lv_style_set_height(&return_style, 38);
|
|
|
|
/*创建list_style*/
|
|
lv_style_init(&list_style);
|
|
lv_style_set_width(&list_style, scr_act_width());
|
|
lv_style_set_height(&list_style, scr_act_height() - 100);
|
|
lv_style_set_bg_opa(&list_style, LV_OPA_TRANSP);
|
|
lv_style_set_pad_hor(&list_style, 0); /*填充列表空隙*/
|
|
}
|
|
|
|
/*主界面*/
|
|
static void main_gui(void)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
lv_obj_t *tileview = lv_tileview_create(scr);
|
|
lv_obj_set_style_bg_opa(tileview, LV_OPA_TRANSP, 0);
|
|
lv_obj_set_style_opa(tileview, LV_OPA_TRANSP, LV_PART_SCROLLBAR);
|
|
|
|
lv_obj_t *scr_main = lv_tileview_add_tile(tileview, 1, 1, LV_DIR_HOR );
|
|
lv_obj_t *scr_ring = lv_tileview_add_tile(tileview, 2, 1, LV_DIR_LEFT);
|
|
lv_obj_set_tile(tileview, scr_main, LV_ANIM_OFF);
|
|
|
|
/*主屏幕*/
|
|
lv_obj_add_style(scr_main, &scr_style, 0);
|
|
|
|
lv_time_t time;
|
|
time.year = 2024;
|
|
time.month = 10;
|
|
time.day = 24;
|
|
time.hour = 11;
|
|
time.min = 24;
|
|
time.weekday = "星期一";
|
|
|
|
lv_obj_show_battery(3, scr);
|
|
lv_obj_show_wifi(1, scr);
|
|
lv_obj_show_time(&time, scr);
|
|
|
|
btn_notify = lv_btn_create(scr_main);
|
|
lv_obj_add_style(btn_notify, &btn_style, 0);
|
|
lv_obj_align(btn_notify, LV_ALIGN_LEFT_MID, 50, 150);
|
|
lv_obj_set_size(btn_notify, scr_act_width() - 300, 100);
|
|
lv_obj_add_event_cb(btn_notify, main_event_cb, LV_EVENT_CLICKED, 0);
|
|
lv_obj_t *notiflabel = lv_label_create(btn_notify);
|
|
lv_obj_add_style(notiflabel, &btn_text_style, 0);
|
|
lv_label_set_text(notiflabel, "今天有人经过门前 ");
|
|
lv_obj_set_size(notiflabel, 250, 24);
|
|
lv_label_set_long_mode(notiflabel, LV_LABEL_LONG_SCROLL_CIRCULAR);
|
|
lv_obj_align(notiflabel, LV_ALIGN_LEFT_MID, 0, 0);
|
|
|
|
btn_set = lv_btn_create(scr_main);
|
|
lv_obj_add_style(btn_set, &btn_style, 0);
|
|
lv_obj_set_size(btn_set, 150, 100);
|
|
lv_obj_align_to(btn_set, btn_notify, LV_ALIGN_OUT_RIGHT_MID, 50, 0);
|
|
lv_obj_set_style_bg_img_src(btn_set, LV_SYMBOL_SETTINGS, 0);
|
|
lv_obj_set_style_text_font(btn_set, &lv_font_montserrat_34, 0);
|
|
lv_obj_add_event_cb(btn_set, main_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_msg = lv_btn_create(scr_main);
|
|
lv_obj_add_style(btn_msg, &btn_style, 0);
|
|
lv_obj_set_size(btn_msg, scr_act_width() - 100, 150);
|
|
lv_obj_align_to(btn_msg, btn_notify, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 50);
|
|
lv_obj_add_event_cb(btn_msg, main_event_cb, LV_EVENT_CLICKED, NULL);
|
|
lv_obj_t *label = lv_label_create(btn_msg);
|
|
lv_obj_add_style(label, &btn_text_style, 0);
|
|
lv_label_set_text(label, "您有新的留言");
|
|
lv_obj_t *reddot = lv_btn_create(btn_msg);
|
|
lv_obj_set_style_bg_color(reddot, lv_palette_main(LV_PALETTE_RED), 0);
|
|
lv_obj_align(reddot, LV_ALIGN_TOP_RIGHT, 0, 0);
|
|
lv_obj_set_size(reddot, 20, 20);
|
|
|
|
btn_dial = lv_btn_create(scr_main);
|
|
lv_obj_add_style(btn_dial, &btn_style, 0);
|
|
lv_obj_set_size(btn_dial, scr_act_width() - 300, 150);
|
|
lv_obj_align_to(btn_dial, btn_msg, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 50);
|
|
lv_obj_set_style_bg_color(btn_dial, lv_palette_main(LV_PALETTE_GREEN), 0);
|
|
lv_obj_set_style_bg_img_src(btn_dial, dial_img, 0);
|
|
lv_obj_add_event_cb(btn_dial, main_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_record = lv_btn_create(scr_main);
|
|
lv_obj_add_style(btn_record, &btn_style, 0);
|
|
lv_obj_set_size(btn_record, 150, 150);
|
|
lv_obj_align_to(btn_record, btn_dial, LV_ALIGN_OUT_RIGHT_MID, 50, 0);
|
|
lv_obj_set_style_bg_color(btn_record, lv_palette_main(LV_PALETTE_RED), 0);
|
|
lv_obj_add_event_cb(btn_record, main_event_cb, LV_EVENT_PRESSED, 0);
|
|
lv_obj_add_event_cb(btn_record, main_event_cb, LV_EVENT_RELEASED, 0);
|
|
img_record = lv_img_create(btn_record);
|
|
lv_img_set_src(img_record, record_img);
|
|
lv_obj_center(img_record);
|
|
|
|
slider_vol = lv_slider_create(scr_main);
|
|
lv_slider_set_range(slider_vol, 0, 100);
|
|
lv_obj_add_style(slider_vol, &btn_style, 0);
|
|
lv_obj_set_size(slider_vol, 150, 300);
|
|
lv_obj_align_to(slider_vol, btn_set, LV_ALIGN_OUT_TOP_LEFT, 0, -20);
|
|
lv_obj_set_style_opa(slider_vol, LV_OPA_TRANSP, LV_PART_KNOB);
|
|
lv_obj_set_style_radius(slider_vol, 0, LV_PART_INDICATOR);
|
|
lv_obj_add_event_cb(slider_vol, main_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
|
|
lv_obj_t *img_vol = lv_img_create(slider_vol);
|
|
lv_img_set_src(img_vol, vol_img);
|
|
lv_obj_align_to(img_vol, slider_vol, LV_ALIGN_CENTER, 0, 0);
|
|
lv_obj_move_foreground(img_vol);
|
|
|
|
slider_light = lv_slider_create(scr_main);
|
|
lv_slider_set_range(slider_light, 0, 100);
|
|
lv_obj_add_style(slider_light, &btn_style, 0);
|
|
lv_obj_set_size(slider_light, 150, 300);
|
|
lv_obj_align_to(slider_light, slider_vol, LV_ALIGN_OUT_TOP_LEFT, 0, -30);
|
|
lv_obj_set_style_opa(slider_light, LV_OPA_TRANSP, LV_PART_KNOB);
|
|
lv_obj_set_style_radius(slider_light, 0, LV_PART_INDICATOR);
|
|
lv_obj_add_event_cb(slider_light, main_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
|
|
lv_obj_t *img_light = lv_img_create(slider_light);
|
|
lv_img_set_src(img_light, light_img);
|
|
lv_obj_align_to(img_light, slider_light, LV_ALIGN_CENTER, 0, 0);
|
|
lv_obj_move_foreground(img_light);
|
|
|
|
/*门铃响电话*/
|
|
lv_obj_add_style(scr_ring, &scr_style, 0);
|
|
|
|
btn_accept = lv_imgbtn_create(scr_ring);
|
|
lv_imgbtn_set_src(btn_accept, LV_IMGBTN_STATE_RELEASED, accept_img, accept_img, accept_img);
|
|
lv_obj_align(btn_accept, LV_ALIGN_RIGHT_MID, -100, 200);
|
|
lv_obj_add_event_cb(btn_accept, main_event_cb, LV_EVENT_CLICKED, NULL);
|
|
lv_obj_t *label_ring = lv_label_create(scr_ring);
|
|
lv_label_set_text(label_ring, "接听");
|
|
lv_obj_align_to(label_ring, btn_accept, LV_ALIGN_OUT_BOTTOM_MID, 0, 20);
|
|
|
|
btn_refuse = lv_imgbtn_create(scr_ring);
|
|
lv_imgbtn_set_src(btn_refuse, LV_IMGBTN_STATE_RELEASED, refuse_img, refuse_img, refuse_img);
|
|
lv_obj_align(btn_refuse, LV_ALIGN_LEFT_MID, 100, 200);
|
|
lv_obj_add_event_cb(btn_refuse, main_event_cb, LV_EVENT_CLICKED, NULL);
|
|
label_ring = lv_label_create(scr_ring);
|
|
lv_label_set_text(label_ring, "拒绝");
|
|
lv_obj_align_to(label_ring, btn_refuse, LV_ALIGN_OUT_BOTTOM_MID, 0, 20);
|
|
|
|
}
|
|
|
|
static void main_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
|
|
if(target == btn_set)
|
|
{
|
|
setting_gui();
|
|
}
|
|
else if(target == btn_notify)
|
|
{
|
|
LV_LOG_USER("notify click");
|
|
notify_gui();
|
|
}
|
|
else if(target == btn_msg)
|
|
{
|
|
msg_gui();
|
|
}
|
|
else if(target == btn_dial)
|
|
{
|
|
dial_gui();
|
|
}
|
|
else if(target == btn_record)
|
|
{
|
|
if(code == LV_EVENT_PRESSED)
|
|
{
|
|
LV_LOG_USER("start press");
|
|
lv_obj_add_flag(img_record, LV_OBJ_FLAG_HIDDEN);
|
|
img_onrecord = lv_img_create(btn_record);
|
|
lv_img_set_src(img_onrecord, onrecord_img);
|
|
lv_obj_center(img_onrecord);
|
|
lv_anim_t anim;
|
|
lv_anim_init(&anim);
|
|
lv_anim_set_var(&anim, img_onrecord);
|
|
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t) lv_img_set_angle);
|
|
lv_anim_set_time(&anim, 500);
|
|
lv_anim_set_values(&anim, 0, 3599);
|
|
lv_anim_set_repeat_count(&anim, LV_ANIM_REPEAT_INFINITE);
|
|
lv_anim_start(&anim);
|
|
}
|
|
else if(code == LV_EVENT_RELEASED)
|
|
{
|
|
LV_LOG_USER("end press");
|
|
lv_obj_clear_flag(img_record, LV_OBJ_FLAG_HIDDEN);
|
|
lv_obj_del(img_onrecord);
|
|
}
|
|
|
|
}
|
|
else if(target == slider_vol)
|
|
{
|
|
LV_LOG_USER("vol: %d", lv_slider_get_value(slider_vol));
|
|
}
|
|
else if(target == slider_light)
|
|
{
|
|
LV_LOG_USER("light: %d", lv_slider_get_value(slider_light));
|
|
}
|
|
}
|
|
|
|
static void return_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
|
|
if(target == btn_return)
|
|
{
|
|
LV_LOG_USER("btn_return");
|
|
main_gui();
|
|
}
|
|
else if(target == btn_home)
|
|
{
|
|
LV_LOG_USER("btn_home");
|
|
main_gui();
|
|
}
|
|
else if(target == btn_return_set)
|
|
{
|
|
LV_LOG_USER("btn_return_set");
|
|
setting_gui();
|
|
}
|
|
}
|
|
|
|
|
|
static void notify_gui(void)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
lv_obj_show_battery(3, scr);
|
|
lv_obj_show_wifi(1, scr);
|
|
|
|
lv_obj_t *label = lv_label_create(scr);
|
|
lv_label_set_text(label, "异常信息");
|
|
lv_obj_align(label, LV_ALIGN_TOP_MID, 0, 10);
|
|
|
|
notify_list = lv_list_create(scr);
|
|
lv_obj_add_style(notify_list, &list_style, 0);
|
|
lv_obj_align(notify_list, LV_ALIGN_TOP_LEFT, 0, 100);
|
|
|
|
lv_obj_t *notify_btn;
|
|
lv_obj_t *reddot;
|
|
static const char *notify_items[] = {"异常信息1", "异常信息2", "异常信息3", "异常信息4"};
|
|
for(int i = 0; i < sizeof(notify_items)/sizeof(notify_items[0]); i++)
|
|
{
|
|
notify_btn = lv_list_add_btn(notify_list, NULL, notify_items[i]);
|
|
lv_obj_set_height(notify_btn, 100);
|
|
lv_obj_set_style_bg_opa(notify_btn, LV_OPA_30, 0);
|
|
lv_obj_add_event_cb(notify_btn, noitify_event_cb, LV_EVENT_CLICKED, NULL);
|
|
reddot = lv_btn_create(notify_btn);
|
|
lv_obj_set_size(reddot, 10, 10);
|
|
lv_obj_align(reddot, LV_ALIGN_TOP_RIGHT, 0, 0);
|
|
lv_obj_set_style_bg_color(reddot, lv_palette_main(LV_PALETTE_RED), 0);
|
|
lv_obj_clear_flag(reddot, LV_OBJ_FLAG_HIDDEN);
|
|
}
|
|
|
|
btn_return = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_return, LV_IMGBTN_STATE_RELEASED, NULL, return_img, NULL);
|
|
lv_obj_add_style(btn_return, &return_style, 0);
|
|
lv_obj_align(btn_return, LV_ALIGN_TOP_LEFT, 0, 10);
|
|
lv_obj_add_event_cb(btn_return, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
}
|
|
|
|
static void noitify_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
lv_obj_t *child = NULL;
|
|
|
|
if(code == LV_EVENT_CLICKED)
|
|
{
|
|
LV_LOG_USER("Already read");
|
|
child = lv_obj_get_child(target, -1);
|
|
lv_obj_add_flag(child, LV_OBJ_FLAG_HIDDEN);
|
|
}
|
|
}
|
|
|
|
static void msg_gui(void)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
lv_obj_show_battery(3, scr);
|
|
lv_obj_show_wifi(1, scr);
|
|
|
|
lv_obj_t *label = lv_label_create(scr);
|
|
lv_label_set_text(label, "留言信息");
|
|
lv_obj_align(label, LV_ALIGN_TOP_MID, 0, 10);
|
|
|
|
msg_list = lv_list_create(scr);
|
|
lv_obj_add_style(msg_list, &list_style, 0);
|
|
lv_obj_align(msg_list, LV_ALIGN_TOP_LEFT, 0, 100);
|
|
|
|
lv_obj_t *msg_btn;
|
|
lv_obj_t *reddot;
|
|
static const char *msg_items[] = {"留言信息1", "留言信息2", "留言信息3", "留言信息4"};
|
|
for(int i = 0; i < sizeof(msg_items)/sizeof(msg_items[0]); i++)
|
|
{
|
|
msg_btn = lv_list_add_btn(msg_list, NULL, msg_items[i]);
|
|
lv_obj_set_height(msg_btn, 100);
|
|
lv_obj_set_style_bg_opa(msg_btn, LV_OPA_30, 0);
|
|
lv_obj_add_event_cb(msg_btn, msg_event_cb, LV_EVENT_CLICKED, NULL);
|
|
reddot = lv_btn_create(msg_btn);
|
|
lv_obj_set_size(reddot, 10, 10);
|
|
lv_obj_align(reddot, LV_ALIGN_TOP_RIGHT, 0, 0);
|
|
lv_obj_set_style_bg_color(reddot, lv_palette_main(LV_PALETTE_RED), 0);
|
|
lv_obj_clear_flag(reddot, LV_OBJ_FLAG_HIDDEN);
|
|
}
|
|
|
|
btn_return = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_return, LV_IMGBTN_STATE_RELEASED, NULL, return_img, NULL);
|
|
lv_obj_add_style(btn_return, &return_style, 0);
|
|
lv_obj_align(btn_return, LV_ALIGN_TOP_LEFT, 0, 10);
|
|
lv_obj_add_event_cb(btn_return, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
static void msg_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
lv_obj_t *child = NULL;
|
|
|
|
if(code == LV_EVENT_CLICKED)
|
|
{
|
|
LV_LOG_USER("Already read");
|
|
child = lv_obj_get_child(target, -1);
|
|
lv_obj_add_flag(child, LV_OBJ_FLAG_HIDDEN);
|
|
}
|
|
}
|
|
|
|
static void dial_gui(void)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
lv_obj_t *btn_cancel = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_cancel, LV_IMGBTN_STATE_RELEASED, refuse_img, refuse_img, refuse_img);
|
|
lv_obj_align(btn_cancel, LV_ALIGN_CENTER, 0, 300);
|
|
lv_obj_set_style_transform_zoom(btn_cancel, 258, LV_STATE_PRESSED);
|
|
lv_obj_add_event_cb(btn_cancel, dial_event_cb, LV_EVENT_CLICKED, NULL);
|
|
lv_obj_t *label = lv_label_create(scr);
|
|
lv_label_set_text(label, "取消");
|
|
lv_obj_align_to(label, btn_cancel, LV_ALIGN_OUT_BOTTOM_MID, 0, 50);
|
|
}
|
|
|
|
static void dial_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
|
|
if(code == LV_EVENT_CLICKED)
|
|
{
|
|
main_gui();
|
|
}
|
|
}
|
|
|
|
static void setting_gui(void)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
lv_obj_show_battery(3, scr);
|
|
lv_obj_show_wifi(1, scr);
|
|
|
|
setting_list = lv_list_create(scr);
|
|
lv_obj_add_style(setting_list, &list_style, 0);
|
|
lv_obj_align(setting_list, LV_ALIGN_TOP_LEFT, 0, 100);
|
|
|
|
lv_obj_t *setting_btn;
|
|
static const char *setting_items[] = {"语言设置", "时间设置", "门锁设置", "恢复出厂", "网络配置", "设备绑定", "关于设备"};
|
|
for(int i = 0; i < sizeof(setting_items)/sizeof(setting_items[0]); i++)
|
|
{
|
|
setting_btn = lv_list_add_btn(setting_list, NULL, setting_items[i]);
|
|
lv_obj_set_height(setting_btn, 100);
|
|
lv_obj_set_style_bg_opa(setting_btn, LV_OPA_30, 0);
|
|
lv_obj_add_event_cb(setting_btn, setting_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
btn_return = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_return, LV_IMGBTN_STATE_RELEASED, NULL, return_img, NULL);
|
|
lv_obj_add_style(btn_return, &return_style, 0);
|
|
lv_obj_align(btn_return, LV_ALIGN_TOP_LEFT, 0, 10);
|
|
lv_obj_add_event_cb(btn_return, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_home = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_home, LV_IMGBTN_STATE_RELEASED, NULL, home_img, NULL);
|
|
lv_obj_add_style(btn_home, &return_style, 0);
|
|
lv_obj_align_to(btn_home, btn_return, LV_ALIGN_OUT_RIGHT_TOP, 20, 0);
|
|
lv_obj_add_event_cb(btn_home, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
static void setting_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
const char *text = lv_list_get_btn_text(setting_list, target);
|
|
|
|
if(strcmp(text, "语言设置") == 0)
|
|
{
|
|
language_gui();
|
|
}
|
|
else if(strcmp(text, "时间设置") == 0)
|
|
{
|
|
time_gui();
|
|
}
|
|
else if(strcmp(text, "门锁设置") == 0)
|
|
{
|
|
door_gui();
|
|
}
|
|
else if(strcmp(text, "恢复出厂") == 0)
|
|
{
|
|
recovery_gui();
|
|
}
|
|
else if(strcmp(text, "网络配置") == 0)
|
|
{
|
|
LV_LOG_USER("wifi connect");
|
|
wificonfg_gui();
|
|
}
|
|
else if(strcmp(text, "设备绑定") == 0)
|
|
{
|
|
bond_gui();
|
|
}
|
|
else if(strcmp(text, "关于设备") == 0)
|
|
{
|
|
info_gui();
|
|
}
|
|
}
|
|
|
|
static void door_gui(void)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
lv_obj_show_battery(3, scr);
|
|
lv_obj_show_wifi(1, scr);
|
|
|
|
door_setting_list = lv_list_create(scr);
|
|
lv_obj_add_style(door_setting_list, &list_style, 0);
|
|
lv_obj_align(door_setting_list, LV_ALIGN_TOP_LEFT, 0, 100);
|
|
|
|
lv_obj_t *setting_btn;
|
|
lv_obj_t *setting_switch;
|
|
static const char *door_setting_items[] = {"开门方向翻转","常开模式", "自动反锁", "哨兵模式", "老化测试", "出厂测试"};
|
|
for(int i = 0; i < sizeof(door_setting_items)/sizeof(door_setting_items[0]); i++)
|
|
{
|
|
setting_btn = lv_list_add_btn(door_setting_list, NULL, door_setting_items[i]);
|
|
lv_obj_set_height(setting_btn, 100);
|
|
lv_obj_set_style_bg_opa(setting_btn, LV_OPA_30, 0);
|
|
setting_switch = lv_switch_create(setting_btn);
|
|
lv_obj_add_event_cb(setting_switch, door_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
|
|
}
|
|
|
|
btn_return_set = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_return_set, LV_IMGBTN_STATE_RELEASED, NULL, return_img, NULL);
|
|
lv_obj_add_style(btn_return_set, &return_style, 0);
|
|
lv_obj_align(btn_return_set, LV_ALIGN_TOP_LEFT, 0, 10);
|
|
lv_obj_add_event_cb(btn_return_set, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_home = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_home, LV_IMGBTN_STATE_RELEASED, NULL, home_img, NULL);
|
|
lv_obj_add_style(btn_home, &return_style, 0);
|
|
lv_obj_align_to(btn_home, btn_return, LV_ALIGN_OUT_RIGHT_TOP, 20, 0);
|
|
lv_obj_add_event_cb(btn_home, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
static void door_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
lv_obj_t *parent = lv_obj_get_parent(target);
|
|
|
|
if(code == LV_EVENT_VALUE_CHANGED)
|
|
{
|
|
if(lv_obj_get_state(target) & LV_STATE_CHECKED)
|
|
{
|
|
LV_LOG_USER("turn on");
|
|
}
|
|
else
|
|
{
|
|
LV_LOG_USER("turn off");
|
|
}
|
|
}
|
|
}
|
|
|
|
static const char *lang_items[] = {"中文", "English", "Japanese", "Korean"};
|
|
|
|
static void language_gui(void)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
lv_obj_show_battery(3, scr);
|
|
lv_obj_show_wifi(1, scr);
|
|
|
|
language_list = lv_list_create(scr);
|
|
lv_obj_add_style(language_list, &list_style, 0);
|
|
lv_obj_align(language_list, LV_ALIGN_TOP_LEFT, 0, 100);
|
|
|
|
lv_obj_t *lang_btn;
|
|
for(int i = 0; i < sizeof(lang_items)/sizeof(lang_items[0]); i++)
|
|
{
|
|
lang_btn = lv_list_add_btn(language_list, NULL, lang_items[i]);
|
|
lv_obj_set_height(lang_btn, 100);
|
|
lv_obj_set_style_bg_opa(lang_btn, LV_OPA_30, 0);
|
|
lv_obj_add_event_cb(lang_btn, language_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
btn_return_set = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_return_set, LV_IMGBTN_STATE_RELEASED, NULL, return_img, NULL);
|
|
lv_obj_add_style(btn_return_set, &return_style, 0);
|
|
lv_obj_align(btn_return_set, LV_ALIGN_TOP_LEFT, 0, 10);
|
|
lv_obj_add_event_cb(btn_return_set, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_home = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_home, LV_IMGBTN_STATE_RELEASED, NULL, home_img, NULL);
|
|
lv_obj_add_style(btn_home, &return_style, 0);
|
|
lv_obj_align_to(btn_home, btn_return, LV_ALIGN_OUT_RIGHT_TOP, 20, 0);
|
|
lv_obj_add_event_cb(btn_home, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
static void language_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
const char *text = lv_list_get_btn_text(language_list, target);
|
|
|
|
if(code == LV_EVENT_CLICKED)
|
|
{
|
|
for(int i = 0; i < sizeof(lang_items)/sizeof(lang_items[0]); i++)
|
|
{
|
|
if(strcmp(text, lang_items[i]) == 0)
|
|
{
|
|
LV_LOG_USER("%s", text);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
typedef enum MonthType
|
|
{
|
|
BIGMONTH = 0,
|
|
SMALLMONTH,
|
|
LEAPFEB,
|
|
COMMONFEB
|
|
}yearMonth;
|
|
|
|
const char *MonthDays[] = {"01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31",\
|
|
"01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30",\
|
|
"01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29",\
|
|
"01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28"};
|
|
|
|
static void time_gui(void)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
lv_obj_show_battery(3, scr);
|
|
lv_obj_show_wifi(1, scr);
|
|
|
|
lv_obj_t *label = lv_label_create(scr);
|
|
lv_label_set_text(label, "完成");
|
|
lv_obj_set_style_text_color(label, lv_palette_main(LV_PALETTE_RED), 0);
|
|
lv_obj_align(label, LV_ALIGN_TOP_RIGHT, -30, 50);
|
|
lv_obj_add_flag(label, LV_OBJ_FLAG_CLICKABLE);
|
|
lv_obj_add_event_cb(label, time_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
roller_year = lv_roller_create(scr);
|
|
lv_roller_set_options(roller_year, "2024\n2025\n2026\n2027\n2028\n2029\n2030\n2031\n2032\n2033\n2034\n2035\n2036\n2037\n2038\n2039\n2040\n2041\n2042\n2043\n2044\n2045\n2046\n2047\n2048\n2049\n2050", LV_ROLLER_MODE_INFINITE);
|
|
lv_roller_set_visible_row_count(roller_year, 5);
|
|
lv_obj_set_width(roller_year, 80);
|
|
lv_obj_align(roller_year, LV_ALIGN_LEFT_MID, 100, -200);
|
|
lv_obj_add_event_cb(roller_year, time_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
|
|
label = lv_label_create(scr);
|
|
lv_label_set_text(label, "年");
|
|
lv_obj_align_to(label, roller_year, LV_ALIGN_OUT_RIGHT_MID, 20, 0);
|
|
|
|
roller_month = lv_roller_create(scr);
|
|
lv_roller_set_options(roller_month, "01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12", LV_ROLLER_MODE_INFINITE);
|
|
lv_roller_set_visible_row_count(roller_month, 5);
|
|
lv_obj_set_width(roller_month, 80);
|
|
lv_obj_align(roller_month, LV_ALIGN_CENTER, 0, -200);
|
|
lv_obj_add_event_cb(roller_month, time_event_cb, LV_EVENT_VALUE_CHANGED, NULL);
|
|
label = lv_label_create(scr);
|
|
lv_label_set_text(label, "月");
|
|
lv_obj_align_to(label, roller_month, LV_ALIGN_OUT_RIGHT_MID, 20, 0);
|
|
|
|
roller_day = lv_roller_create(scr);
|
|
lv_roller_set_options(roller_day, "01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31", LV_ROLLER_MODE_INFINITE);
|
|
lv_roller_set_visible_row_count(roller_day, 5);
|
|
lv_obj_set_width(roller_day, 80);
|
|
lv_obj_align(roller_day, LV_ALIGN_RIGHT_MID, -100, -200);
|
|
label = lv_label_create(scr);
|
|
lv_label_set_text(label, "日");
|
|
lv_obj_align_to(label, roller_day, LV_ALIGN_OUT_RIGHT_MID, 20, 0);
|
|
|
|
lv_obj_t *roller_hour = lv_roller_create(scr);
|
|
lv_roller_set_options(roller_hour, "00\n01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23", LV_ROLLER_MODE_INFINITE);
|
|
lv_obj_set_width(roller_hour, 80);
|
|
lv_obj_align(roller_hour, LV_ALIGN_LEFT_MID, 100, 200);
|
|
lv_roller_set_visible_row_count(roller_hour, 5);
|
|
label = lv_label_create(scr);
|
|
lv_label_set_text(label, "时");
|
|
lv_obj_align_to(label, roller_hour, LV_ALIGN_OUT_RIGHT_MID, 20, 0);
|
|
|
|
lv_obj_t *roller_min = lv_roller_create(scr);
|
|
lv_roller_set_options(roller_min, "00\n01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59", LV_ROLLER_MODE_INFINITE);
|
|
lv_obj_set_width(roller_min, 80);
|
|
lv_obj_align(roller_min, LV_ALIGN_CENTER, 0, 200);
|
|
lv_roller_set_visible_row_count(roller_min, 5);
|
|
label = lv_label_create(scr);
|
|
lv_label_set_text(label, "分");
|
|
lv_obj_align_to(label, roller_min, LV_ALIGN_OUT_RIGHT_MID, 20, 0);
|
|
|
|
lv_obj_t *roller_sec = lv_roller_create(scr);
|
|
lv_roller_set_options(roller_sec, "00\n01\n02\n03\n04\n05\n06\n07\n08\n09\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59", LV_ROLLER_MODE_INFINITE);
|
|
lv_obj_set_width(roller_sec, 80);
|
|
lv_obj_align(roller_sec, LV_ALIGN_RIGHT_MID, -100, 200);
|
|
lv_roller_set_visible_row_count(roller_sec, 5);
|
|
label = lv_label_create(scr);
|
|
lv_label_set_text(label, "秒");
|
|
lv_obj_align_to(label, roller_sec, LV_ALIGN_OUT_RIGHT_MID, 20, 0);
|
|
|
|
btn_return_set = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_return_set, LV_IMGBTN_STATE_RELEASED, NULL, return_img, NULL);
|
|
lv_obj_add_style(btn_return_set, &return_style, 0);
|
|
lv_obj_align(btn_return_set, LV_ALIGN_TOP_LEFT, 0, 10);
|
|
lv_obj_add_event_cb(btn_return_set, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_home = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_home, LV_IMGBTN_STATE_RELEASED, NULL, home_img, NULL);
|
|
lv_obj_add_style(btn_home, &return_style, 0);
|
|
lv_obj_align_to(btn_home, btn_return, LV_ALIGN_OUT_RIGHT_TOP, 20, 0);
|
|
lv_obj_add_event_cb(btn_home, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
static void time_anim_ready_cb(lv_anim_t *anim)
|
|
{
|
|
setting_gui();
|
|
}
|
|
|
|
static void time_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
uint16_t month_index;
|
|
uint16_t year_index;
|
|
|
|
if(target == roller_month || target == roller_year)
|
|
{
|
|
month_index = lv_roller_get_selected(roller_month);
|
|
LV_LOG_USER("month_index : %d", month_index);
|
|
if(month_index == 0 || month_index == 2 || month_index == 4 || month_index == 6 || month_index == 7 || month_index == 9 || month_index == 11)
|
|
{
|
|
lv_roller_set_options(roller_day, MonthDays[BIGMONTH], LV_ROLLER_MODE_INFINITE);
|
|
}
|
|
else if (month_index == 1)
|
|
{
|
|
year_index = lv_roller_get_selected(roller_year);
|
|
LV_LOG_USER("year_index : %d", year_index);
|
|
if(year_index % 4 == 0)
|
|
{
|
|
lv_roller_set_options(roller_day, MonthDays[LEAPFEB], LV_ROLLER_MODE_INFINITE);
|
|
}
|
|
else
|
|
{
|
|
lv_roller_set_options(roller_day, MonthDays[COMMONFEB], LV_ROLLER_MODE_INFINITE);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
lv_roller_set_options(roller_day, MonthDays[SMALLMONTH], LV_ROLLER_MODE_INFINITE);
|
|
}
|
|
}
|
|
|
|
if(code == LV_EVENT_CLICKED)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *img = lv_img_create(top());
|
|
lv_img_set_src(img, succ_img);
|
|
lv_obj_center(img);
|
|
lv_obj_t *label = lv_label_create(top());
|
|
lv_label_set_text(label, "设置成功");
|
|
lv_obj_align_to(label, img, LV_ALIGN_OUT_BOTTOM_MID, 0, 50);
|
|
lv_anim_t anim;
|
|
lv_anim_init(&anim);
|
|
lv_anim_set_var(&anim, img);
|
|
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t) lv_img_set_angle);
|
|
lv_anim_set_time(&anim, 500);
|
|
lv_anim_set_values(&anim, 0, 0);
|
|
lv_anim_set_ready_cb(&anim, time_anim_ready_cb);
|
|
lv_anim_start(&anim);
|
|
}
|
|
}
|
|
|
|
/*恢复出厂界面,特殊:会采用定时器,所以返回的时候要删掉定时器,该界面的返回键不统一处理*/
|
|
static void recovery_gui(void)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
lv_obj_show_battery(3, scr);
|
|
lv_obj_show_wifi(1, scr);
|
|
|
|
lv_obj_t *img = lv_img_create(scr);
|
|
lv_img_set_src(img, warn_img);
|
|
lv_obj_align(img, LV_ALIGN_CENTER, 0, -200);
|
|
|
|
lv_obj_t *label = lv_label_create(scr);
|
|
lv_label_set_text(label, "恢复出厂设置,将清空所有用户数据,确定继续?");
|
|
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
|
|
|
|
timer = lv_timer_create(timer_callback, 1000, NULL);
|
|
lv_timer_set_repeat_count(timer, 10);
|
|
|
|
cntdown = 10;
|
|
|
|
btn_yes = lv_btn_create(scr);
|
|
lv_obj_set_style_bg_color(btn_yes, lv_palette_main(LV_PALETTE_GREY), 0);
|
|
lv_obj_set_size(btn_yes, 150, 50);
|
|
lv_obj_align_to(btn_yes, label, LV_ALIGN_OUT_BOTTOM_RIGHT, 0, 50);
|
|
label_yes = lv_label_create(btn_yes);
|
|
lv_obj_add_style(label_yes, &btn_text_style, 0);
|
|
lv_label_set_text_fmt(label_yes, "确认(%d)", cntdown);
|
|
lv_obj_center(label_yes);
|
|
|
|
btn_no = lv_btn_create(scr);
|
|
lv_obj_set_style_bg_color(btn_no, lv_palette_main(LV_PALETTE_GREEN), 0);
|
|
lv_obj_set_size(btn_no, 150, 50);
|
|
lv_obj_align_to(btn_no, label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 50);
|
|
lv_obj_add_event_cb(btn_no, recovery_event_cb, LV_EVENT_CLICKED, NULL);
|
|
lv_obj_t *label_btn = lv_label_create(btn_no);
|
|
lv_obj_add_style(label_btn, &btn_text_style, 0);
|
|
lv_label_set_text(label_btn, "取消");
|
|
lv_obj_center(label_btn);
|
|
|
|
btn_return_set = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_return_set, LV_IMGBTN_STATE_RELEASED, return_img, return_img, return_img);
|
|
lv_obj_add_style(btn_return_set, &return_style, 0);
|
|
lv_obj_align(btn_return_set, LV_ALIGN_TOP_LEFT, 0, 10);
|
|
lv_obj_add_event_cb(btn_return_set, recovery_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_home = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_home, LV_IMGBTN_STATE_RELEASED, home_img, home_img, home_img);
|
|
lv_obj_add_style(btn_home, &return_style, 0);
|
|
lv_obj_align_to(btn_home, btn_return, LV_ALIGN_OUT_RIGHT_TOP, 20, 0);
|
|
lv_obj_add_event_cb(btn_home, recovery_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
static void timer_callback(lv_timer_t *timer_c)
|
|
{
|
|
if(--cntdown)
|
|
{
|
|
lv_label_set_text_fmt(label_yes, "确认(%d)", cntdown);
|
|
}
|
|
else
|
|
{
|
|
lv_timer_del(timer);
|
|
lv_label_set_text(label_yes, "确认");
|
|
lv_obj_set_style_bg_color(btn_yes, lv_palette_main(LV_PALETTE_RED), 0);
|
|
lv_obj_add_event_cb(btn_yes, recovery_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
}
|
|
|
|
static void recovery_anim_ready_cb(lv_anim_t *anim)
|
|
{
|
|
/*现在暂时把触摸当成触发源结束恢复出厂*/
|
|
lv_obj_add_event_cb(top(), recovery_event_cb, LV_EVENT_CLICKED, NULL);
|
|
lv_anim_del(anim, NULL);
|
|
}
|
|
|
|
static void recovery_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
lv_obj_t *parent = lv_obj_get_parent(target);
|
|
|
|
if(target == btn_yes)
|
|
{
|
|
lv_obj_clean(top());
|
|
LV_LOG_USER("recovery yes");
|
|
lv_obj_t *label = lv_label_create(top());
|
|
lv_label_set_text(label, "正在恢复出厂设置中,请稍等...");
|
|
lv_obj_center(label);
|
|
lv_anim_t anim;
|
|
lv_anim_init(&anim);
|
|
lv_anim_set_var(&anim, label);
|
|
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_img_set_angle);
|
|
lv_anim_set_time(&anim, 2500);
|
|
lv_anim_set_values(&anim, 0, 0);
|
|
lv_anim_set_repeat_count(&anim, LV_ANIM_REPEAT_INFINITE);
|
|
lv_anim_set_start_cb(&anim, recovery_anim_ready_cb);
|
|
lv_anim_start(&anim);
|
|
}
|
|
else if(target == btn_no)
|
|
{
|
|
LV_LOG_USER("recovery quit");
|
|
setting_gui();
|
|
}
|
|
else if(target == btn_return_set)
|
|
{
|
|
lv_timer_del(timer);
|
|
setting_gui();
|
|
}
|
|
else if(target == btn_home)
|
|
{
|
|
lv_timer_del(timer);
|
|
main_gui();
|
|
}
|
|
else
|
|
{
|
|
main_gui();
|
|
}
|
|
|
|
}
|
|
|
|
static void wificonfg_gui(void)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
lv_obj_show_battery(3, scr);
|
|
lv_obj_show_wifi(1, scr);
|
|
|
|
lv_obj_t *label = lv_label_create(scr);
|
|
lv_label_set_text(label, "请打开手机app设置网络配置二维码,放置在镜头前扫描");
|
|
lv_obj_align(label, LV_ALIGN_CENTER, 0, 100);
|
|
/*模拟得到通知*/
|
|
lv_obj_add_flag(label, LV_OBJ_FLAG_CLICKABLE);
|
|
lv_obj_add_event_cb(label, wificonfg_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_return_set = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_return_set, LV_IMGBTN_STATE_RELEASED, NULL, return_img, NULL);
|
|
lv_obj_add_style(btn_return_set, &return_style, 0);
|
|
lv_obj_align(btn_return_set, LV_ALIGN_TOP_LEFT, 0, 10);
|
|
lv_obj_add_event_cb(btn_return_set, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_home = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_home, LV_IMGBTN_STATE_RELEASED, NULL, home_img, NULL);
|
|
lv_obj_add_style(btn_home, &return_style, 0);
|
|
lv_obj_align_to(btn_home, btn_return, LV_ALIGN_OUT_RIGHT_TOP, 20, 0);
|
|
lv_obj_add_event_cb(btn_home, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
static void wifi_anim_ready_cb(lv_anim_t *anim)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
if(0)
|
|
{
|
|
lv_obj_set_style_bg_img_src(scr, succ_img, 0);
|
|
lv_obj_t *label = lv_label_create(scr);
|
|
lv_label_set_text(label, "绑定成功");
|
|
lv_obj_align(label, LV_ALIGN_CENTER, 0, 100);
|
|
}
|
|
else
|
|
{
|
|
lv_obj_set_style_bg_img_src(scr, fail_img, 0);
|
|
lv_obj_t *label = lv_label_create(scr);
|
|
lv_label_set_text(label, "绑定失败");
|
|
lv_obj_align(label, LV_ALIGN_CENTER, 0, 100);
|
|
}
|
|
|
|
btn_return_set = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_return_set, LV_IMGBTN_STATE_RELEASED, NULL, return_img, NULL);
|
|
lv_obj_add_style(btn_return_set, &return_style, 0);
|
|
lv_obj_align(btn_return_set, LV_ALIGN_TOP_LEFT, 0, 10);
|
|
lv_obj_add_event_cb(btn_return_set, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
|
|
static void wificonfg_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
|
|
if(code == LV_EVENT_CLICKED)
|
|
{
|
|
lv_obj_clean(top());
|
|
LV_LOG_USER("ad wifi yes");
|
|
lv_obj_t *label = lv_label_create(top());
|
|
lv_label_set_text(label, "正在配置中...");
|
|
lv_obj_center(label);
|
|
lv_anim_t anim;
|
|
lv_anim_init(&anim);
|
|
lv_anim_set_var(&anim, label);
|
|
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_img_set_angle);
|
|
lv_anim_set_time(&anim, 2500);
|
|
lv_anim_set_values(&anim, 0, 0);
|
|
lv_anim_set_ready_cb(&anim, wifi_anim_ready_cb);
|
|
lv_anim_start(&anim);
|
|
}
|
|
}
|
|
|
|
static void bond_gui(void)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
lv_obj_show_battery(3, scr);
|
|
lv_obj_show_wifi(1, scr);
|
|
|
|
lv_obj_t *label = lv_label_create(scr);
|
|
lv_label_set_text(label, "请打开手机app添加设备绑定二维码,放置在镜头前扫描");
|
|
lv_obj_align(label, LV_ALIGN_CENTER, 0, 100);
|
|
/*模拟得到通知*/
|
|
lv_obj_add_flag(label, LV_OBJ_FLAG_CLICKABLE);
|
|
lv_obj_add_event_cb(label, bond_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_return_set = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_return_set, LV_IMGBTN_STATE_RELEASED, NULL, return_img, NULL);
|
|
lv_obj_add_style(btn_return_set, &return_style, 0);
|
|
lv_obj_align(btn_return_set, LV_ALIGN_TOP_LEFT, 0, 10);
|
|
lv_obj_add_event_cb(btn_return_set, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_home = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_home, LV_IMGBTN_STATE_RELEASED, NULL, home_img, NULL);
|
|
lv_obj_add_style(btn_home, &return_style, 0);
|
|
lv_obj_align_to(btn_home, btn_return, LV_ALIGN_OUT_RIGHT_TOP, 20, 0);
|
|
lv_obj_add_event_cb(btn_home, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
static void bond_anim_ready_cb(lv_anim_t *anim)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
if(0)
|
|
{
|
|
lv_obj_set_style_bg_img_src(scr, succ_img, 0);
|
|
lv_obj_t *label = lv_label_create(scr);
|
|
lv_label_set_text(label, "绑定成功");
|
|
lv_obj_align(label, LV_ALIGN_CENTER, 0, 100);
|
|
}
|
|
else
|
|
{
|
|
lv_obj_set_style_bg_img_src(scr, fail_img, 0);
|
|
lv_obj_t *label = lv_label_create(scr);
|
|
lv_label_set_text(label, "绑定失败");
|
|
lv_obj_align(label, LV_ALIGN_CENTER, 0, 100);
|
|
}
|
|
|
|
btn_return_set = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_return_set, LV_IMGBTN_STATE_RELEASED, NULL, return_img, NULL);
|
|
lv_obj_add_style(btn_return_set, &return_style, 0);
|
|
lv_obj_align(btn_return_set, LV_ALIGN_TOP_LEFT, 0, 10);
|
|
lv_obj_add_event_cb(btn_return_set, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
static void bond_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
|
|
if(code == LV_EVENT_CLICKED)
|
|
{
|
|
lv_obj_clean(top());
|
|
LV_LOG_USER("bond yes");
|
|
lv_obj_t *label = lv_label_create(top());
|
|
lv_label_set_text(label, "正在绑定中...");
|
|
lv_obj_center(label);
|
|
lv_anim_t anim;
|
|
lv_anim_init(&anim);
|
|
lv_anim_set_var(&anim, label);
|
|
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t)lv_img_set_angle);
|
|
lv_anim_set_time(&anim, 2500);
|
|
lv_anim_set_values(&anim, 0, 0);
|
|
lv_anim_set_ready_cb(&anim, bond_anim_ready_cb);
|
|
lv_anim_start(&anim);
|
|
}
|
|
|
|
}
|
|
|
|
static void info_gui(void)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *scr = lv_obj_create(NULL);
|
|
lv_obj_add_style(scr, &scr_style, 0);
|
|
lv_scr_load(scr);
|
|
|
|
lv_obj_show_battery(3, scr);
|
|
lv_obj_show_wifi(1, scr);
|
|
|
|
lv_obj_t *label = lv_label_create(scr);
|
|
lv_label_set_text(label, "当前版本");
|
|
lv_obj_align(label, LV_ALIGN_TOP_MID, 0, 100);
|
|
|
|
const char *ver[] = {"1.2.3.4", "1.2.0.3", "2.3.0.2", "2.4.0.1"};
|
|
label = lv_label_create(scr);
|
|
lv_label_set_text_fmt(label, "V851S_FRONT: %s \n\n\n133: %s \n\n\nV851S_BACK: %s \n\n\nXR806: %s", ver[0], ver[1], ver[2], ver[3]);
|
|
lv_obj_align(label, LV_ALIGN_TOP_MID, 0, 300);
|
|
|
|
lv_obj_t *btn = lv_btn_create(scr);
|
|
lv_obj_set_size(btn, 170, 70);
|
|
lv_obj_align_to(btn, label, LV_ALIGN_OUT_BOTTOM_MID, 0, 100);
|
|
lv_obj_set_style_bg_color(btn, lv_palette_main(LV_PALETTE_GREEN), 0);
|
|
label = lv_label_create(btn);
|
|
lv_label_set_text(label, "检测新版本");
|
|
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
|
|
lv_obj_add_event_cb(btn, info_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_return_set = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_return_set, LV_IMGBTN_STATE_RELEASED, NULL, return_img, NULL);
|
|
lv_obj_add_style(btn_return_set, &return_style, 0);
|
|
lv_obj_align(btn_return_set, LV_ALIGN_TOP_LEFT, 0, 10);
|
|
lv_obj_add_event_cb(btn_return_set, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
|
|
btn_home = lv_imgbtn_create(scr);
|
|
lv_imgbtn_set_src(btn_home, LV_IMGBTN_STATE_RELEASED, NULL, home_img, NULL);
|
|
lv_obj_add_style(btn_home, &return_style, 0);
|
|
lv_obj_align_to(btn_home, btn_return, LV_ALIGN_OUT_RIGHT_TOP, 20, 0);
|
|
lv_obj_add_event_cb(btn_home, return_event_cb, LV_EVENT_CLICKED, NULL);
|
|
}
|
|
|
|
static void info_nonew_anim_ready_cb(lv_anim_t *anim)
|
|
{
|
|
lv_anim_del(anim, NULL);
|
|
info_gui();
|
|
}
|
|
|
|
static void info_renew_anim_ready_cb(lv_anim_t *anim)
|
|
{
|
|
lv_anim_del(anim, NULL);
|
|
|
|
lv_obj_t *btn = lv_btn_create(top());
|
|
lv_obj_set_size(btn, 500, 200);
|
|
lv_obj_center(btn);
|
|
lv_obj_set_style_bg_color(btn, lv_palette_main(LV_PALETTE_GREY), 0);
|
|
|
|
lv_obj_t *label = lv_label_create(btn);
|
|
lv_label_set_text(label, "检测到新版本,是否需要更新版本?");
|
|
lv_obj_align(label, LV_ALIGN_TOP_MID, 0, 50);
|
|
|
|
btn_yes = lv_btn_create(btn);
|
|
lv_obj_set_style_bg_color(btn_yes, lv_palette_main(LV_PALETTE_RED), 0);
|
|
lv_obj_set_size(btn_yes, 100, 50);
|
|
lv_obj_align_to(btn_yes, label, LV_ALIGN_OUT_BOTTOM_RIGHT, 0, 50);
|
|
lv_obj_add_event_cb(btn_yes, info_renew_event_cb, LV_EVENT_CLICKED, 0);
|
|
lv_obj_t *label_btn = lv_label_create(btn_yes);
|
|
lv_obj_add_style(label_btn, &btn_text_style, 0);
|
|
lv_label_set_text(label_btn, "确认");
|
|
lv_obj_center(label_btn);
|
|
|
|
btn_no = lv_btn_create(btn);
|
|
lv_obj_set_style_bg_color(btn_no, lv_palette_main(LV_PALETTE_GREEN), 0);
|
|
lv_obj_set_size(btn_no, 100, 50);
|
|
lv_obj_align_to(btn_no, label, LV_ALIGN_OUT_BOTTOM_LEFT, 0, 50);
|
|
lv_obj_add_event_cb(btn_no, info_renew_event_cb, LV_EVENT_CLICKED, 0);
|
|
label_btn = lv_label_create(btn_no);
|
|
lv_obj_add_style(label_btn, &btn_text_style, 0);
|
|
lv_label_set_text(label_btn, "取消");
|
|
lv_obj_center(label_btn);
|
|
}
|
|
|
|
static void info_renew_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
if(target == btn_yes)
|
|
{
|
|
lv_obj_clean(top());
|
|
lv_obj_t *label = lv_label_create(top());
|
|
lv_label_set_text(label, "正在更新中...");
|
|
lv_obj_center(label);
|
|
lv_anim_t anim;
|
|
lv_anim_init(&anim);
|
|
lv_anim_set_var(&anim, label);
|
|
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t) lv_img_set_angle);
|
|
lv_anim_set_time(&anim, 1000);
|
|
lv_anim_set_values(&anim, 0, 0);
|
|
lv_anim_set_ready_cb(&anim, info_nonew_anim_ready_cb);
|
|
lv_anim_start(&anim);
|
|
}
|
|
else if(target == btn_no)
|
|
{
|
|
info_gui();
|
|
}
|
|
}
|
|
|
|
static void info_event_cb(lv_event_cb_t *e)
|
|
{
|
|
lv_obj_t *target = lv_event_get_target(e);
|
|
lv_event_code_t code = lv_event_get_code(e);
|
|
lv_obj_t *parent = lv_obj_get_parent(target);
|
|
|
|
if(code == LV_EVENT_CLICKED)
|
|
{
|
|
if(0)
|
|
{
|
|
LV_LOG_USER("Not Detect New Version");
|
|
|
|
lv_obj_t *label = lv_label_create(parent);
|
|
lv_label_set_text(label, "当前已是最新版本");
|
|
lv_obj_align_to(label, target, LV_ALIGN_OUT_BOTTOM_MID, 0, 50);
|
|
lv_anim_t anim;
|
|
lv_anim_init(&anim);
|
|
lv_anim_set_var(&anim, label);
|
|
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t) lv_img_set_angle);
|
|
lv_anim_set_time(&anim, 1000);
|
|
lv_anim_set_values(&anim, 0, 0);
|
|
lv_anim_set_ready_cb(&anim, info_nonew_anim_ready_cb);
|
|
lv_anim_start(&anim);
|
|
}
|
|
else
|
|
{
|
|
LV_LOG_USER("Detect New Version");
|
|
lv_obj_t *img = lv_img_create(parent);
|
|
lv_img_set_src(img, wait_img);
|
|
lv_obj_center(img);
|
|
lv_anim_t anim;
|
|
lv_anim_init(&anim);
|
|
lv_anim_set_var(&anim, img);
|
|
lv_anim_set_exec_cb(&anim, (lv_anim_exec_xcb_t) lv_img_set_angle);
|
|
lv_anim_set_time(&anim, 1000);
|
|
lv_anim_set_values(&anim, 0, 3599);
|
|
lv_anim_set_ready_cb(&anim, info_renew_anim_ready_cb);
|
|
lv_anim_start(&anim);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine, int nCmdShow)
|
|
{
|
|
/*Initialize LittlevGL*/
|
|
lv_init();
|
|
|
|
/*Initialize the HAL for LittlevGL*/
|
|
lv_win32_init(hInstance, SW_SHOWNORMAL, 720, 1280, NULL);
|
|
|
|
/*Output prompt information to the console, you can also use printf() to print directly*/
|
|
LV_LOG_USER("LVGL initialization completed!");
|
|
|
|
/*Run the demo*/
|
|
lv_obj_style_init();
|
|
main_gui();
|
|
|
|
while(!lv_win32_quit_signal) {
|
|
/* Periodically call the lv_task handler.
|
|
* It could be done in a timer interrupt or an OS task too.*/
|
|
lv_task_handler();
|
|
usleep(10000); /*Just to let the system breath*/
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
/*显示电池电压 分五档*/
|
|
static void lv_obj_show_battery(int batterylevel, lv_obj_t *parent)
|
|
{
|
|
lv_obj_t *battery = lv_label_create(parent);
|
|
switch (batterylevel)
|
|
{
|
|
case 0: lv_label_set_text(battery, LV_SYMBOL_BATTERY_EMPTY);break;
|
|
case 1: lv_label_set_text(battery, LV_SYMBOL_BATTERY_1);break;
|
|
case 2: lv_label_set_text(battery, LV_SYMBOL_BATTERY_2);break;
|
|
case 3: lv_label_set_text(battery, LV_SYMBOL_BATTERY_3);break;
|
|
case 4: lv_label_set_text(battery, LV_SYMBOL_BATTERY_FULL);break;
|
|
}
|
|
lv_obj_align(battery, LV_ALIGN_TOP_RIGHT, -20, 10);
|
|
lv_obj_set_style_text_font(battery,&lv_font_montserrat_34, 0);
|
|
}
|
|
|
|
static void lv_obj_show_wifi(int connect_state, lv_obj_t *parent)
|
|
{
|
|
lv_obj_t *wifi = lv_label_create(parent);
|
|
if(connect_state)
|
|
{
|
|
lv_label_set_text(wifi, LV_SYMBOL_WIFI);
|
|
}
|
|
else
|
|
{
|
|
lv_label_set_text(wifi, LV_SYMBOL_WIFI);
|
|
lv_obj_set_style_text_color(wifi, lv_palette_main(LV_PALETTE_GREY), 0);
|
|
}
|
|
|
|
lv_obj_align(wifi, LV_ALIGN_TOP_RIGHT, -70, 10);
|
|
lv_obj_set_style_text_font(wifi,&lv_font_montserrat_34, 0);
|
|
}
|
|
|
|
static void lv_obj_show_time(lv_time_t *time, lv_obj_t *parent)
|
|
{
|
|
lv_obj_t *label_time = lv_label_create(parent);
|
|
lv_label_set_text_fmt(label_time, "%d:%d", time->hour, time->min);
|
|
lv_obj_set_style_text_font(label_time, &lv_font_heiti100, 0);
|
|
lv_obj_align(label_time, LV_ALIGN_TOP_LEFT, 50, 50);
|
|
|
|
lv_obj_t *label_day = lv_label_create(parent);
|
|
lv_label_set_text_fmt(label_day, "%d-%d-%d %s", time->year, time->month, time->day, time->weekday);
|
|
lv_obj_set_style_text_font(label_day, &lv_font_heiti24, 0);
|
|
lv_obj_align_to(label_day, label_time, LV_ALIGN_OUT_BOTTOM_LEFT, 20, 20);
|
|
|
|
}
|
|
|