mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-28 13:46:36 +00:00
Initial lvgl v8 test
This commit is contained in:
parent
02cb5fea78
commit
9b17008739
@ -2,15 +2,19 @@
|
||||
#include "user_config_override.h"
|
||||
#endif
|
||||
|
||||
#include "lv_conf_v7.h"
|
||||
#define LV_THEME_DEFAULT_FLAGS LV_THEME_DEFAULT_FLAG
|
||||
// #include "lv_conf_v7.h"
|
||||
// #define LV_THEME_DEFAULT_FLAGS LV_THEME_DEFAULT_FLAG
|
||||
|
||||
/*#include "lv_conf_v8.h"
|
||||
#include "lv_conf_v8.h"
|
||||
#include "lv_symbol_mdi_def.h"
|
||||
|
||||
#ifndef LV_CONF_STUB_H
|
||||
#define LV_CONF_STUB_H
|
||||
|
||||
#ifdef LV_THEME_DEFAULT_FLAG
|
||||
#define LV_THEME_DEFAULT_FLAG 0
|
||||
#define LV_THEME_DEFAULT_FLAGS LV_THEME_DEFAULT_FLAG
|
||||
|
||||
//#ifdef LV_THEME_DEFAULT_FLAG
|
||||
|
||||
//#define lv_task_handler lv_timer_handler
|
||||
|
||||
@ -28,9 +32,9 @@
|
||||
|
||||
#define lv_checkbox_set_checked(obj, en) \
|
||||
((en) ? lv_obj_add_state(obj, LV_STATE_CHECKED) : lv_obj_clear_state(obj, LV_STATE_CHECKED))
|
||||
#define lv_checkbox_is_checked(obj) ((lv_obj_get_state(obj) & LV_STATE_CHECKED)?true:false)
|
||||
#define lv_checkbox_is_checked(obj) ((lv_obj_get_state(obj) & LV_STATE_CHECKED) ? true : false)
|
||||
|
||||
#define lv_chart_set_range(chart, ymin, ymax) lv_chart_set_y_range(chart, LV_CHART_AXIS_PRIMARY_Y, ymin, ymax)
|
||||
//#define lv_chart_set_range(chart, ymin, ymax) lv_chart_set_y_range(chart, LV_CHART_AXIS_PRIMARY_Y, ymin, ymax)
|
||||
#define lv_obj_set_style_local_pad_inner lv_obj_set_style_local_pad_top
|
||||
#define lv_dropdown_set_draw_arrow(obj, en) lv_dropdown_set_symbol(obj, en ? LV_SYMBOL_DOWN : NULL)
|
||||
|
||||
@ -38,6 +42,8 @@
|
||||
#define lv_cont_set_layout(obj, fit)
|
||||
#define lv_roller_set_auto_fit(obj, fit)
|
||||
#define lv_obj_set_top(obj, fit)
|
||||
#define lv_obj_add_protect(a, b)
|
||||
#define LV_PROTECT_PRESS_LOST 0
|
||||
|
||||
#define LV_BTN_STATE_PRESSED LV_STATE_PRESSED
|
||||
#define LV_BTN_STATE_DISABLED LV_STATE_DISABLED
|
||||
@ -50,6 +56,11 @@
|
||||
#define lv_btn_get_state lv_obj_get_state
|
||||
#define lv_btn_state_t lv_state_t
|
||||
|
||||
#define lv_disp_buf_t lv_disp_draw_buf_t
|
||||
#define lv_disp_buf_init lv_disp_draw_buf_init
|
||||
|
||||
#define lv_switch_get_state lv_obj_get_state
|
||||
|
||||
#define LV_CPICKER_PART_MAIN LV_COLORWHEEL_PART_MAIN
|
||||
#define LV_CPICKER_PART_KNOB LV_COLORWHEEL_PART_KNOB
|
||||
#define LV_CPICKER_TYPE_RECT 0
|
||||
@ -64,21 +75,23 @@
|
||||
#define LV_CHECKBOX_PART_BG LV_CHECKBOX_PART_MAIN
|
||||
#define LV_PAGE_PART_SCROLLBAR
|
||||
|
||||
#define LV_TEXTAREA_PART_BG LV_TEXTAREA_PART_MAIN
|
||||
#define LV_BTNMATRIX_PART_BG LV_BTNMATRIX_PART_MAIN
|
||||
#define LV_KEYBOARD_PART_BG LV_BTNMATRIX_PART_MAIN
|
||||
#define LV_KEYBOARD_PART_BTN LV_BTNMATRIX_PART_BTN
|
||||
#define LV_SPINBOX_PART_BG LV_ARC_PART_MAIN
|
||||
#define LV_SWITCH_PART_BG LV_SWITCH_PART_MAIN
|
||||
#define LV_SLIDER_PART_BG LV_SLIDER_PART_MAIN
|
||||
#define LV_TEXTAREA_PART_BG LV_PART_MAIN
|
||||
#define LV_BTNMATRIX_PART_BG LV_PART_MAIN
|
||||
#define LV_KEYBOARD_PART_BG LV_PART_MAIN
|
||||
#define LV_KEYBOARD_PART_BTN LV_PART
|
||||
#define LV_SPINBOX_PART_BG LV_PART_MAIN
|
||||
#define LV_SWITCH_PART_BG LV_PART_MAIN
|
||||
#define LV_SLIDER_PART_BG LV_PART_MAIN
|
||||
#define LV_DROPDOWN_PART_SCROLLBAR LV_DROPDOWN_PART_LIST // ??
|
||||
#define LV_TEXTAREA_PART_SCROLLBAR LV_TEXTAREA_PART_PLACEHOLDER // ??
|
||||
|
||||
#define LV_THEME_DEFAULT_FLAGS LV_THEME_DEFAULT_FLAG
|
||||
|
||||
#define lv_textarea_set_cursor_hidden(a, b)
|
||||
|
||||
#define lv_img_get_file_name(img) \
|
||||
(((lv_img_ext_t *)lv_obj_get_ext_attr(img))->src_type == LV_IMG_SRC_FILE) \
|
||||
? (const char *)((lv_img_ext_t *)lv_obj_get_ext_attr(img))->src \
|
||||
(((lv_img_ext_t*)lv_obj_get_ext_attr(img))->src_type == LV_IMG_SRC_FILE) \
|
||||
? (const char*)((lv_img_ext_t*)lv_obj_get_ext_attr(img))->src \
|
||||
: ""
|
||||
|
||||
// For hasp_theme.c
|
||||
@ -87,6 +100,27 @@
|
||||
#define lv_obj_add_style_list _lv_obj_add_style_list
|
||||
#define lv_obj_report_style_mod lv_obj_report_style_change
|
||||
|
||||
#define lv_keyboard_set_cursor_manage(a, b)
|
||||
#define lv_obj_set_style_value_str(a, b, c)
|
||||
|
||||
#define LV_OBJ_PART_MAIN LV_PART_MAIN
|
||||
#define LV_BTN_PART_MAIN LV_PART_MAIN
|
||||
|
||||
#define LV_THEME_DEFAULT_FONT_SMALL LV_FONT_DEFAULT
|
||||
#define LV_THEME_DEFAULT_FONT_NORMAL LV_FONT_DEFAULT
|
||||
#define LV_THEME_DEFAULT_FONT_SUBTITLE LV_FONT_DEFAULT
|
||||
#define LV_THEME_DEFAULT_FONT_TITLE LV_FONT_DEFAULT
|
||||
|
||||
#define LV_COLOR_BLACK lv_color_black()
|
||||
#define LV_COLOR_WHITE lv_color_white()
|
||||
#define LV_COLOR_SILVER lv_color_make(0xff, 0xff, 0xff)
|
||||
#define LV_COLOR_RED lv_color_make(0xff, 0xff, 0xff)
|
||||
#define LV_COLOR_GRAY lv_color_make(0xff, 0xff, 0xff)
|
||||
|
||||
#define LV_IMG_CACHE_DEF_SIZE_PSRAM 20
|
||||
|
||||
#define _lv_memset_00(p, size) memset(p, 0, size);
|
||||
#define LV_ASSERT_MEM(x)
|
||||
|
||||
//#endif
|
||||
#endif
|
||||
#endif
|
||||
*/
|
1134
include/lv_conf_v8.h
1134
include/lv_conf_v8.h
File diff suppressed because it is too large
Load Diff
@ -25,7 +25,7 @@ extern "C" {
|
||||
#define LV_SYMBOL_CLOSE "\xEE\x85\x96" /* 0xE156, close */
|
||||
#define LV_SYMBOL_NEW_LINE "\xEE\x98\x8C" /* 0xE60C, subdirectory-arrow-left */
|
||||
#define LV_SYMBOL_BACKSPACE "\xEE\x81\x8D" /* 0xE04D, arrow-left */
|
||||
|
||||
#define LV_SYMBOL_KEYBOARD "\xEF\xA3\xBF"
|
||||
/** Invalid symbol at (U+F8FF). If written before a string then `lv_img` will show it as a label*/
|
||||
#define LV_SYMBOL_DUMMY "\xEF\xA3\xBF"
|
||||
|
||||
|
@ -6,16 +6,13 @@
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#include "lvgl.h"
|
||||
#include "lv_misc/lv_debug.h"
|
||||
#include "lv_widgets/lv_canvas.h"
|
||||
#include "lv_qrcode.h"
|
||||
#include "qrcodegen.h"
|
||||
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
#define QR_SIZE 150
|
||||
#define QR_SIZE 140
|
||||
|
||||
/**********************
|
||||
* TYPEDEFS
|
||||
@ -49,38 +46,17 @@ lv_obj_t* lv_qrcode_create(lv_obj_t* parent, lv_coord_t size, lv_color_t dark_co
|
||||
{
|
||||
uint32_t buf_size = LV_CANVAS_BUF_SIZE_INDEXED_1BIT(size, size);
|
||||
uint8_t* buf = lv_mem_alloc(buf_size);
|
||||
LV_ASSERT_MEM(buf);
|
||||
LV_ASSERT_MALLOC(buf);
|
||||
if(buf == NULL) return NULL;
|
||||
|
||||
lv_obj_t* canvas = lv_canvas_create(parent, NULL);
|
||||
lv_obj_t* canvas = lv_canvas_create(parent);
|
||||
if(canvas == NULL) return NULL;
|
||||
|
||||
lv_canvas_set_buffer(canvas, buf, size, size, LV_IMG_CF_INDEXED_1BIT);
|
||||
lv_canvas_set_palette(canvas, 0, dark_color);
|
||||
lv_canvas_set_palette(canvas, 1, light_color);
|
||||
|
||||
return canvas;
|
||||
|
||||
// lv_img_dsc_t * img_buf = lv_img_buf_alloc(20, 20, LV_IMG_CF_TRUE_COLOR);
|
||||
// if(img_buf == NULL) {
|
||||
// LV_LOG_ERROR("img_buf failed");
|
||||
// return NULL;
|
||||
// }
|
||||
|
||||
// lv_obj_t * image = lv_img_create(parent, NULL); // empty image
|
||||
// if(image == NULL) {
|
||||
// lv_img_buf_free(img_buf);
|
||||
// LV_LOG_ERROR("image failed");
|
||||
// return NULL;
|
||||
// }
|
||||
|
||||
// lv_img_set_auto_size(image, true); // auto size according to img_buf
|
||||
// lv_img_set_src(image, img_buf); // assign the image buffer
|
||||
|
||||
// lv_img_set_zoom(image, 5 * LV_IMG_ZOOM_NONE); // default zoom
|
||||
// lv_img_set_antialias(image, false); // don't anti-alias
|
||||
// lv_obj_set_style_local_image_recolor(image, LV_IMG_PART_MAIN, LV_STATE_DEFAULT, dark_color);
|
||||
|
||||
// return image;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -94,8 +70,7 @@ lv_res_t lv_qrcode_update(lv_obj_t* qrcode, const void* data, uint32_t data_len)
|
||||
{
|
||||
lv_color_t c;
|
||||
c.full = 1;
|
||||
lv_canvas_fill_bg(qrcode, c, 0);
|
||||
// lv_canvas_zoom();
|
||||
lv_canvas_fill_bg(qrcode, c, LV_OPA_COVER);
|
||||
|
||||
if(data_len > qrcodegen_BUFFER_LEN_MAX) return LV_RES_INV;
|
||||
|
||||
@ -108,60 +83,58 @@ lv_res_t lv_qrcode_update(lv_obj_t* qrcode, const void* data, uint32_t data_len)
|
||||
|
||||
if(!ok) return LV_RES_INV;
|
||||
|
||||
lv_coord_t obj_w = lv_obj_get_width(qrcode);
|
||||
int qr_size = qrcodegen_getSize(qr0);
|
||||
int scale = obj_w / qr_size;
|
||||
int scaled = qr_size * scale;
|
||||
int margin = (obj_w - scaled) / 2;
|
||||
lv_img_dsc_t* imgdsc = lv_canvas_get_img(qrcode);
|
||||
lv_coord_t obj_w = imgdsc->header.w;
|
||||
int qr_size = qrcodegen_getSize(qr0);
|
||||
int scale = obj_w / qr_size;
|
||||
int scaled = qr_size * scale;
|
||||
int margin = (obj_w - scaled) / 2;
|
||||
uint8_t* buf_u8 = (uint8_t*)imgdsc->data + 8; /*+8 skip the palette*/
|
||||
|
||||
for(int y = 0; y < scaled; y++) {
|
||||
for(int x = 0; x < scaled; x++) {
|
||||
c.full = qrcodegen_getModule(qr0, x / scale, y / scale) ? 0 : 1;
|
||||
lv_canvas_set_px(qrcode, x + margin, y + margin, c);
|
||||
/* Copy the qr code canvas:
|
||||
* A simple `lv_canvas_set_px` would work but it's slow for so many pixels.
|
||||
* So buffer 1 byte (8 px) from the qr code and set it in the canvas image */
|
||||
uint32_t row_byte_cnt = (imgdsc->header.w + 7) >> 3;
|
||||
int y;
|
||||
for(y = margin; y < scaled + margin; y += scale) {
|
||||
uint8_t b = 0;
|
||||
uint8_t p = 0;
|
||||
bool aligned = false;
|
||||
int x;
|
||||
for(x = margin; x < scaled + margin; x++) {
|
||||
bool a = qrcodegen_getModule(qr0, (x - margin) / scale, (y - margin) / scale);
|
||||
|
||||
if(aligned == false && (x & 0x7) == 0) aligned = true;
|
||||
|
||||
if(aligned == false) {
|
||||
c.full = a ? 0 : 1;
|
||||
lv_canvas_set_px(qrcode, x, y, c);
|
||||
} else {
|
||||
if(!a) b |= (1 << (7 - p));
|
||||
p++;
|
||||
if(p == 8) {
|
||||
uint32_t px = row_byte_cnt * y + (x >> 3);
|
||||
buf_u8[px] = b;
|
||||
b = 0;
|
||||
p = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return LV_RES_OK;
|
||||
}
|
||||
/*Process the last byte of the row*/
|
||||
if(p) {
|
||||
/*Make the rest of the bits white*/
|
||||
b |= (1 << (8 - p)) - 1;
|
||||
|
||||
lv_res_t lv_qrcode_update2(lv_obj_t* qrcode, const void* data, uint32_t data_len)
|
||||
{
|
||||
lv_color_t c;
|
||||
// c.full = 1;
|
||||
uint32_t px = row_byte_cnt * y + (x >> 3);
|
||||
buf_u8[px] = b;
|
||||
}
|
||||
|
||||
if(data_len > qrcodegen_BUFFER_LEN_MAX) return LV_RES_INV;
|
||||
|
||||
/* create a working cache and results buffer */
|
||||
uint8_t data_tmp[qrcodegen_BUFFER_LEN_MAX];
|
||||
uint8_t qr_pixels[qrcodegen_BUFFER_LEN_MAX];
|
||||
memcpy(data_tmp, data, data_len);
|
||||
|
||||
/* convert data into pixels */
|
||||
bool ok = qrcodegen_encodeBinary(data_tmp, data_len, qr_pixels, qrcodegen_Ecc_MEDIUM, qrcodegen_VERSION_MIN,
|
||||
qrcodegen_VERSION_MAX, qrcodegen_Mask_AUTO, true);
|
||||
|
||||
if(!ok) return LV_RES_INV;
|
||||
|
||||
// lv_coord_t obj_w = lv_obj_get_width(qrcode);
|
||||
// int scale = 1;
|
||||
// int scaled = 0;
|
||||
// int qr_size = qrcodegen_getSize(qr_pixels);
|
||||
int margin = 0;
|
||||
|
||||
lv_img_ext_t* ext = (lv_img_ext_t*)lv_obj_get_ext_attr(qrcode);
|
||||
if(!ext || !ext->src) return LV_RES_INV;
|
||||
|
||||
lv_img_header_t header;
|
||||
lv_img_decoder_get_info(ext->src, &header);
|
||||
|
||||
lv_img_decoder_dsc_t dec_dsc;
|
||||
lv_res_t res = lv_img_decoder_open(&dec_dsc, ext->src, LV_COLOR_CYAN);
|
||||
(void)res; // unused
|
||||
|
||||
for(int y = 0; y < dec_dsc.header.h; y++) {
|
||||
for(int x = 0; x < dec_dsc.header.w; x++) {
|
||||
c = qrcodegen_getModule(qr_pixels, x, y) ? LV_COLOR_WHITE : LV_COLOR_BLACK;
|
||||
lv_img_buf_set_px_color((lv_img_dsc_t*)dec_dsc.src, x + margin, y + margin, c);
|
||||
/*The Qr is probably scaled so simply to the repeated rows*/
|
||||
int s;
|
||||
const uint8_t* row_ori = buf_u8 + row_byte_cnt * y;
|
||||
for(s = 1; s < scale; s++) {
|
||||
memcpy((uint8_t*)buf_u8 + row_byte_cnt * (y + s), row_ori, row_byte_cnt);
|
||||
}
|
||||
}
|
||||
|
||||
@ -175,8 +148,8 @@ lv_res_t lv_qrcode_update2(lv_obj_t* qrcode, const void* data, uint32_t data_len
|
||||
void lv_qrcode_delete(lv_obj_t* qrcode)
|
||||
{
|
||||
lv_img_dsc_t* img = lv_canvas_get_img(qrcode);
|
||||
lv_img_cache_invalidate_src(img);
|
||||
lv_mem_free(img->data);
|
||||
lv_mem_free(img);
|
||||
lv_obj_del(qrcode);
|
||||
}
|
||||
|
||||
|
@ -13,8 +13,11 @@ extern "C" {
|
||||
/*********************
|
||||
* INCLUDES
|
||||
*********************/
|
||||
#ifdef LV_LVGL_H_INCLUDE_SIMPLE
|
||||
#include "lvgl.h"
|
||||
|
||||
#else
|
||||
#include "lvgl/lvgl.h"
|
||||
#endif
|
||||
/*********************
|
||||
* DEFINES
|
||||
*********************/
|
||||
@ -35,7 +38,7 @@ extern "C" {
|
||||
* @param light_color light color of the QR code
|
||||
* @return pointer to the created QR code object
|
||||
*/
|
||||
lv_obj_t * lv_qrcode_create(lv_obj_t * parent, lv_coord_t size, lv_color_t dark_color, lv_color_t light_color);
|
||||
lv_obj_t* lv_qrcode_create(lv_obj_t* parent, lv_coord_t size, lv_color_t dark_color, lv_color_t light_color);
|
||||
|
||||
/**
|
||||
* Set the data of a QR code object
|
||||
@ -44,13 +47,13 @@ lv_obj_t * lv_qrcode_create(lv_obj_t * parent, lv_coord_t size, lv_color_t dark_
|
||||
* @param data_len length of data in bytes
|
||||
* @return LV_RES_OK: if no error; LV_RES_INV: on error
|
||||
*/
|
||||
lv_res_t lv_qrcode_update(lv_obj_t * qrcode, const void * data, uint32_t data_len);
|
||||
lv_res_t lv_qrcode_update(lv_obj_t* qrcode, const void* data, uint32_t data_len);
|
||||
|
||||
/**
|
||||
* Delete a QR code object
|
||||
* @param qrcode pointer to a QR code object
|
||||
*/
|
||||
void lv_qrcode_delete(lv_obj_t * qrcode);
|
||||
void lv_qrcode_delete(lv_obj_t* qrcode);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
|
@ -29,7 +29,7 @@
|
||||
#endif // ARDUINO_ARCH
|
||||
|
||||
#include "lvgl.h"
|
||||
#include "lv_misc/lv_debug.h"
|
||||
//#include "lv_misc/lv_debug.h"
|
||||
#include "lv_zifont.h"
|
||||
#include "ArduinoLog.h"
|
||||
#include "hasp_macro.h"
|
||||
@ -68,6 +68,7 @@ HASP_ATTRIBUTE_FAST_MEM bool lv_font_get_glyph_dsc_fmt_zifont(const lv_font_t* f
|
||||
uint32_t charInBuffer = 0; // Last Character ID in the Bitmap Buffer
|
||||
// uint8_t filecharBitmap_p[20 * 1024];
|
||||
lv_zifont_char_t lastCharInfo; // Holds the last Glyph DSC
|
||||
size_t current_bitmap_size = 0;
|
||||
|
||||
#if ESP32
|
||||
// static lv_zifont_char_t charCache[256 - 32]; // glyphID DSC cache
|
||||
@ -113,10 +114,11 @@ static inline bool openFont(File& file, const char* filename)
|
||||
|
||||
static inline bool initCharacterFrame(size_t size)
|
||||
{
|
||||
if(size > _lv_mem_get_size(charBitmap_p)) {
|
||||
if(size > current_bitmap_size) {
|
||||
lv_mem_free(charBitmap_p);
|
||||
charBitmap_p = (uint8_t*)lv_mem_alloc(size);
|
||||
LOG_WARNING(TAG_FONT, F("Pixel buffer is %d bytes"), _lv_mem_get_size(charBitmap_p));
|
||||
charBitmap_p = (uint8_t*)lv_mem_alloc(size);
|
||||
current_bitmap_size = size;
|
||||
LOG_WARNING(TAG_FONT, F("Pixel buffer is %d bytes"), current_bitmap_size);
|
||||
}
|
||||
|
||||
if(charBitmap_p != NULL) {
|
||||
|
@ -63,7 +63,7 @@ typedef struct
|
||||
uint8_t Fontdataadd8byte;
|
||||
uint16_t reserved1; // Reserved 1
|
||||
uint32_t Actualnumchars;
|
||||
uint32_t * reserved3; // Reserved 3
|
||||
uint32_t* reserved3; // Reserved 3
|
||||
} zi_font_header_t;
|
||||
|
||||
typedef struct
|
||||
@ -77,15 +77,15 @@ typedef struct
|
||||
uint32_t Startdataaddress;
|
||||
uint8_t Fontdataadd8byte;
|
||||
uint16_t last_glyph_id;
|
||||
lv_zifont_char_t * last_glyph_dsc;
|
||||
lv_zifont_char_t * ascii_glyph_dsc;
|
||||
lv_zifont_char_t* last_glyph_dsc;
|
||||
lv_zifont_char_t* ascii_glyph_dsc;
|
||||
} lv_font_fmt_zifont_dsc_t;
|
||||
|
||||
/**********************
|
||||
* GLOBAL PROTOTYPES
|
||||
**********************/
|
||||
int lv_zifont_init(void);
|
||||
int lv_zifont_font_init(lv_font_t ** font, const char * font_path, uint16_t size);
|
||||
int lv_zifont_font_init(lv_font_t** font, const char* font_path, uint16_t size);
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
|
@ -59,8 +59,8 @@ build_flags =
|
||||
|
||||
; -- Hasp build options ----------------------------
|
||||
-D HASP_VER_MAJ=0
|
||||
-D HASP_VER_MIN=6
|
||||
-D HASP_VER_REV=1
|
||||
-D HASP_VER_MIN=7
|
||||
-D HASP_VER_REV=0-dev ; 0 or 0-dev
|
||||
${override.build_flags}
|
||||
|
||||
; -- Shared library dependencies in all environments
|
||||
@ -74,7 +74,7 @@ lib_deps =
|
||||
;git+https://github.com/andrethomas/TasmotaSlave.git
|
||||
;git+https://github.com/lvgl/lvgl.git
|
||||
;Needed for touch rotation:
|
||||
git+https://github.com/fvanroie/lvgl.git#release/v7
|
||||
git+https://github.com/lvgl/lvgl.git
|
||||
;git+https://github.com/lvgl/lvgl.git#797212a3f346e9fdf71aef6f193889357eeae3f0
|
||||
;git+https://github.com/lvgl/lvgl.git#60ddd13465e4182893d748ae3cc3f69801768e8a
|
||||
;lvgl/lvgl@^7.11.0 ; from PIO library
|
||||
@ -136,7 +136,7 @@ build_flags =
|
||||
;-D HASP_USE_EEPROM=1
|
||||
-D HASP_USE_CONFIG=1 ; Native application, not library
|
||||
-D LV_LOG_TRACE_TIMER=1
|
||||
-D HASP_USE_PNGDECODE=1
|
||||
-D HASP_USE_PNGDECODE=0
|
||||
; -- LittleFS build options ------------------------
|
||||
;-D CONFIG_LITTLEFS_FOR_IDF_3_2 ; obsolete in IDF 3.3
|
||||
|
||||
@ -154,7 +154,7 @@ lib_ignore =
|
||||
lib_deps =
|
||||
ESP Async WebServer
|
||||
LittleFS_esp32
|
||||
git+https://github.com/lvgl/lv_lib_png.git#release/v7
|
||||
git+https://github.com/lvgl/lv_lib_png.git
|
||||
|
||||
ps_ram =
|
||||
-DBOARD_HAS_PSRAM
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* MIT License - Copyright (c) 2019-2021 Francis Van Roie
|
||||
For full license information read the LICENSE file in the project folder */
|
||||
|
||||
#include "hasplib.h"
|
||||
//#include "hasplib.h"
|
||||
|
||||
#if HASP_USE_CUSTOM > 0 && false // <-- set this to true in your code
|
||||
|
||||
@ -26,7 +26,7 @@ void custom_every_second()
|
||||
void custom_every_5seconds()
|
||||
{
|
||||
Log.verbose(TAG_CUSTOM, "5 seconds have passsed...");
|
||||
dispatch_state_subtopic("my_sensor","{\"test\":123}");
|
||||
dispatch_state_subtopic("my_sensor", "{\"test\":123}");
|
||||
}
|
||||
|
||||
bool custom_pin_in_use(uint pin)
|
||||
|
@ -9,7 +9,7 @@
|
||||
#if TOUCH_DRIVER == 2046
|
||||
#if defined(USE_FSMC)
|
||||
#else
|
||||
#include "drv/old/hasp_drv_tft_espi.h"
|
||||
// #include "drv/old/hasp_drv_tft_espi.h"
|
||||
#endif
|
||||
|
||||
#elif TOUCH_DRIVER == 2046
|
||||
@ -63,7 +63,7 @@ void drv_touch_init(uint8_t rotation)
|
||||
#endif
|
||||
|
||||
#elif TOUCH_DRIVER == 911
|
||||
// GT911_init();
|
||||
// GT911_init();
|
||||
|
||||
#elif TOUCH_DRIVER == 0xADC // Analog Digital Touch Conroller
|
||||
// Touch_init();
|
||||
@ -93,10 +93,10 @@ static inline bool drv_touchpad_getXY(int16_t* touchX, int16_t* touchY)
|
||||
touched = haspTft.tft.getTouch((uint16_t*)&normal_x, (uint16_t*)&normal_y, 300);
|
||||
|
||||
#elif TOUCH_DRIVER == 0x2046B
|
||||
touched = XPT2046_getXY(&normal_x, &normal_y, true);
|
||||
touched = XPT2046_getXY(&normal_x, &normal_y, true);
|
||||
|
||||
#elif TOUCH_DRIVER == 911
|
||||
// touched = GT911_getXY(&normal_x, &normal_y, true);
|
||||
// touched = GT911_getXY(&normal_x, &normal_y, true);
|
||||
|
||||
#elif TOUCH_DRIVER == 0xADC // Analog Digital Touch Conroller
|
||||
touched = Touch_getXY(&normal_x, &normal_y, false);
|
||||
@ -192,13 +192,13 @@ IRAM_ATTR bool drv_touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* dat
|
||||
if(hasp_sleep_state /* != HASP_SLEEP_OFF */) hasp_update_sleep_state(); // update Idle
|
||||
|
||||
if(touch_invert_x) {
|
||||
data->point.x = indev_driver->disp->driver.hor_res - touchX;
|
||||
data->point.x = indev_driver->disp->driver->hor_res - touchX;
|
||||
} else {
|
||||
data->point.x = touchX;
|
||||
}
|
||||
|
||||
if(touch_invert_y) {
|
||||
data->point.y = indev_driver->disp->driver.ver_res - touchY;
|
||||
data->point.y = indev_driver->disp->driver->ver_res - touchY;
|
||||
} else {
|
||||
data->point.y = touchY;
|
||||
}
|
||||
@ -221,6 +221,6 @@ IRAM_ATTR bool drv_touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* dat
|
||||
IRAM_ATTR void drv_touch_loop()
|
||||
{
|
||||
#if TOUCH_DRIVER == 911
|
||||
// GT911_loop();
|
||||
// GT911_loop();
|
||||
#endif
|
||||
}
|
@ -25,10 +25,8 @@ class BaseTouch {
|
||||
{}
|
||||
void set_invert(bool invert_display)
|
||||
{}
|
||||
IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
IRAM_ATTR void read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
{}
|
||||
void calibrate(uint16_t* calData)
|
||||
{}
|
||||
bool is_driver_pin(uint8_t)
|
||||
|
@ -33,7 +33,7 @@ HASP_ATTRIBUTE_FAST_MEM bool FT6336U_getXY(int16_t* touchX, int16_t* touchY)
|
||||
}
|
||||
}
|
||||
|
||||
IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
IRAM_ATTR void touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
{
|
||||
|
||||
if(ft6336u_touch->read_touch_number() == 1) {
|
||||
|
@ -37,12 +37,12 @@ IRAM_ATTR void GT911_setXY(int8_t contacts, GTPoint* points)
|
||||
// }
|
||||
}
|
||||
|
||||
IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
IRAM_ATTR void touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
{
|
||||
// LOG_VERBOSE(TAG_GUI, F("Contacts: %d"), GT911_num_touches);
|
||||
static GTPoint points[5];
|
||||
|
||||
if(touch.readInput((uint8_t*)&points)>0) {
|
||||
if(touch.readInput((uint8_t*)&points) > 0) {
|
||||
|
||||
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
|
||||
|
||||
@ -51,7 +51,7 @@ IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
data->state = LV_INDEV_STATE_PR;
|
||||
|
||||
} else {
|
||||
data->state = LV_INDEV_STATE_REL;
|
||||
data->state = LV_INDEV_STATE_REL;
|
||||
}
|
||||
|
||||
touch.loop(); // reset IRQ
|
||||
|
@ -25,7 +25,7 @@ extern uint8_t hasp_sleep_state;
|
||||
|
||||
static Adafruit_STMPE610 stmpe610_touchpanel = Adafruit_STMPE610(TOUCH_CS);
|
||||
|
||||
bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
IRAM_ATTR void touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
{
|
||||
data->state = LV_INDEV_STATE_REL;
|
||||
|
||||
@ -33,7 +33,7 @@ bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
while(data->state == LV_INDEV_STATE_REL && stmpe610_touchpanel.touched()) {
|
||||
|
||||
TS_Point point = stmpe610_touchpanel.getPoint();
|
||||
Log.trace(TAG_DRVR, F("STMPE610: x=%i y=%i z=%i"), point.x, point.y, point.z);
|
||||
// Log.trace(TAG_DRVR, F("STMPE610: x=%i y=%i z=%i"), point.x, point.y, point.z);
|
||||
|
||||
if(point.z && point.x < 4096 && point.y < 4096) { // valid reading
|
||||
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
|
||||
@ -48,9 +48,6 @@ bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
/*Return `false` because we are not buffering and no more data to read*/
|
||||
return false;
|
||||
}
|
||||
|
||||
namespace dev {
|
||||
@ -58,9 +55,9 @@ namespace dev {
|
||||
class TouchStmpe610 : public BaseTouch {
|
||||
|
||||
public:
|
||||
IRAM_ATTR bool read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
IRAM_ATTR void read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
{
|
||||
return touch_read(indev_driver, data);
|
||||
touch_read(indev_driver, data);
|
||||
}
|
||||
|
||||
void init(int w, int h)
|
||||
|
@ -14,7 +14,7 @@
|
||||
#include "../../hasp/hasp.h" // for hasp_sleep_state
|
||||
extern uint8_t hasp_sleep_state;
|
||||
|
||||
IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
IRAM_ATTR void touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
{
|
||||
if(haspTft.tft.getTouch((uint16_t*)&data->point.x, (uint16_t*)&data->point.y, 300)) {
|
||||
if(hasp_sleep_state != HASP_SLEEP_OFF) hasp_update_sleep_state(); // update Idle
|
||||
@ -23,9 +23,6 @@ IRAM_ATTR bool touch_read(lv_indev_drv_t* indev_driver, lv_indev_data_t* data)
|
||||
} else {
|
||||
data->state = LV_INDEV_STATE_REL;
|
||||
}
|
||||
|
||||
/*Return `false` because we are not buffering and no more data to read*/
|
||||
return false;
|
||||
}
|
||||
|
||||
namespace dev {
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 12 px
|
||||
* Bpp: 3
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 14 px
|
||||
* Bpp: 3
|
||||
@ -1839,7 +1840,7 @@ lv_font_t robotocondensed_regular_14_ascii = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 16 px
|
||||
* Bpp: 3
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 20 px
|
||||
* Bpp: 3
|
||||
@ -2421,7 +2422,7 @@ lv_font_t robotocondensed_regular_20_ascii = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 22 px
|
||||
* Bpp: 3
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 24 px
|
||||
* Bpp: 3
|
||||
@ -2745,7 +2746,7 @@ lv_font_t robotocondensed_regular_24_ascii = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 26 px
|
||||
* Bpp: 3
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 28 px
|
||||
* Bpp: 3
|
||||
@ -3366,7 +3367,7 @@ lv_font_t robotocondensed_regular_28_ascii = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 32 px
|
||||
* Bpp: 3
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 36 px
|
||||
* Bpp: 3
|
||||
@ -4416,7 +4417,7 @@ lv_font_t robotocondensed_regular_36_ascii = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 38 px
|
||||
* Bpp: 3
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 40 px
|
||||
* Bpp: 3
|
||||
@ -4942,7 +4943,7 @@ lv_font_t robotocondensed_regular_40_ascii = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 44 px
|
||||
* Bpp: 3
|
||||
@ -5465,7 +5466,7 @@ lv_font_t robotocondensed_regular_44_ascii = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 48 px
|
||||
* Bpp: 3
|
||||
@ -5791,7 +5792,7 @@ lv_font_t robotocondensed_regular_48_ascii = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -4,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 12 px
|
||||
* Bpp: 3
|
||||
@ -2202,7 +2203,7 @@ lv_font_t robotocondensed_regular_12_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 14 px
|
||||
* Bpp: 3
|
||||
@ -2462,7 +2463,7 @@ lv_font_t robotocondensed_regular_14_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 16 px
|
||||
* Bpp: 3
|
||||
@ -2675,7 +2676,7 @@ lv_font_t robotocondensed_regular_16_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 20 px
|
||||
* Bpp: 3
|
||||
@ -3213,7 +3214,7 @@ lv_font_t robotocondensed_regular_20_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 22 px
|
||||
* Bpp: 3
|
||||
@ -3507,7 +3508,7 @@ lv_font_t robotocondensed_regular_22_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 24 px
|
||||
* Bpp: 3
|
||||
@ -3639,7 +3640,7 @@ lv_font_t robotocondensed_regular_24_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 26 px
|
||||
* Bpp: 3
|
||||
@ -4068,7 +4069,7 @@ lv_font_t robotocondensed_regular_26_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 28 px
|
||||
* Bpp: 3
|
||||
@ -4418,7 +4419,7 @@ lv_font_t robotocondensed_regular_28_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 32 px
|
||||
* Bpp: 3
|
||||
@ -5046,7 +5047,7 @@ lv_font_t robotocondensed_regular_32_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 36 px
|
||||
* Bpp: 3
|
||||
@ -5822,7 +5823,7 @@ lv_font_t robotocondensed_regular_36_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 38 px
|
||||
* Bpp: 3
|
||||
@ -6159,7 +6160,7 @@ lv_font_t robotocondensed_regular_38_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 40 px
|
||||
* Bpp: 3
|
||||
@ -6514,7 +6515,7 @@ lv_font_t robotocondensed_regular_40_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 44 px
|
||||
* Bpp: 3
|
||||
@ -7216,7 +7217,7 @@ lv_font_t robotocondensed_regular_44_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 48 px
|
||||
* Bpp: 3
|
||||
@ -7701,7 +7702,7 @@ lv_font_t robotocondensed_regular_48_cyrillic = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -4,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 12 px
|
||||
* Bpp: 3
|
||||
@ -2058,7 +2059,7 @@ lv_font_t robotocondensed_regular_12_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 14 px
|
||||
* Bpp: 3
|
||||
@ -2310,7 +2311,7 @@ lv_font_t robotocondensed_regular_14_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 16 px
|
||||
* Bpp: 3
|
||||
@ -2506,7 +2507,7 @@ lv_font_t robotocondensed_regular_16_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 20 px
|
||||
* Bpp: 3
|
||||
@ -3018,7 +3019,7 @@ lv_font_t robotocondensed_regular_20_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 22 px
|
||||
* Bpp: 3
|
||||
@ -3299,7 +3300,7 @@ lv_font_t robotocondensed_regular_22_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 24 px
|
||||
* Bpp: 3
|
||||
@ -3442,7 +3443,7 @@ lv_font_t robotocondensed_regular_24_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 26 px
|
||||
* Bpp: 3
|
||||
@ -3854,7 +3855,7 @@ lv_font_t robotocondensed_regular_26_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 28 px
|
||||
* Bpp: 3
|
||||
@ -4186,7 +4187,7 @@ lv_font_t robotocondensed_regular_28_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 32 px
|
||||
* Bpp: 3
|
||||
@ -4789,7 +4790,7 @@ lv_font_t robotocondensed_regular_32_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 36 px
|
||||
* Bpp: 3
|
||||
@ -5536,7 +5537,7 @@ lv_font_t robotocondensed_regular_36_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 38 px
|
||||
* Bpp: 3
|
||||
@ -5868,7 +5869,7 @@ lv_font_t robotocondensed_regular_38_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 40 px
|
||||
* Bpp: 3
|
||||
@ -6203,7 +6204,7 @@ lv_font_t robotocondensed_regular_40_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 44 px
|
||||
* Bpp: 3
|
||||
@ -6867,7 +6868,7 @@ lv_font_t robotocondensed_regular_44_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 48 px
|
||||
* Bpp: 3
|
||||
@ -7331,7 +7332,7 @@ lv_font_t robotocondensed_regular_48_greek = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -4,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -11,7 +11,11 @@
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "lvgl.h"
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
#include "misc/lv_fs.h"
|
||||
#else
|
||||
#include "lv_misc/lv_fs.h"
|
||||
#endif
|
||||
#include "hasp_font_loader.h"
|
||||
|
||||
#include "hasplib.h"
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 12 px
|
||||
* Bpp: 3
|
||||
@ -2123,7 +2124,7 @@ lv_font_t robotocondensed_regular_12_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 14 px
|
||||
* Bpp: 3
|
||||
@ -2374,7 +2375,7 @@ lv_font_t robotocondensed_regular_14_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 16 px
|
||||
* Bpp: 3
|
||||
@ -2575,7 +2576,7 @@ lv_font_t robotocondensed_regular_16_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 20 px
|
||||
* Bpp: 3
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 22 px
|
||||
* Bpp: 3
|
||||
@ -3410,7 +3411,7 @@ lv_font_t robotocondensed_regular_22_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 24 px
|
||||
* Bpp: 3
|
||||
@ -3566,7 +3567,7 @@ lv_font_t robotocondensed_regular_24_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 26 px
|
||||
* Bpp: 3
|
||||
@ -3991,11 +3992,12 @@ lv_font_t robotocondensed_regular_26_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
.dsc = &font_dsc /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
.dsc = &font_dsc, /*The custom font data. Will be accessed by `get_glyph_bitmap/dsc` */
|
||||
.user_data = NULL
|
||||
};
|
||||
|
||||
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 28 px
|
||||
* Bpp: 3
|
||||
@ -4348,7 +4349,7 @@ lv_font_t robotocondensed_regular_28_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 32 px
|
||||
* Bpp: 3
|
||||
@ -4969,7 +4970,7 @@ lv_font_t robotocondensed_regular_32_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 36 px
|
||||
* Bpp: 3
|
||||
@ -5753,7 +5754,7 @@ lv_font_t robotocondensed_regular_36_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 38 px
|
||||
* Bpp: 3
|
||||
@ -6098,7 +6099,7 @@ lv_font_t robotocondensed_regular_38_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 40 px
|
||||
* Bpp: 3
|
||||
@ -6461,7 +6462,7 @@ lv_font_t robotocondensed_regular_40_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 44 px
|
||||
* Bpp: 3
|
||||
@ -7153,7 +7154,7 @@ lv_font_t robotocondensed_regular_44_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 48 px
|
||||
* Bpp: 3
|
||||
@ -7652,7 +7653,7 @@ lv_font_t robotocondensed_regular_48_latin1 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -4,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 12 px
|
||||
* Bpp: 3
|
||||
@ -2321,7 +2322,7 @@ lv_font_t robotocondensed_regular_12_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 14 px
|
||||
* Bpp: 3
|
||||
@ -2590,7 +2591,7 @@ lv_font_t robotocondensed_regular_14_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 16 px
|
||||
* Bpp: 3
|
||||
@ -2792,7 +2793,7 @@ lv_font_t robotocondensed_regular_16_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 20 px
|
||||
* Bpp: 3
|
||||
@ -3388,7 +3389,7 @@ lv_font_t robotocondensed_regular_20_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -1,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 22 px
|
||||
* Bpp: 3
|
||||
@ -3689,7 +3690,7 @@ lv_font_t robotocondensed_regular_22_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 24 px
|
||||
* Bpp: 3
|
||||
@ -3879,7 +3880,7 @@ lv_font_t robotocondensed_regular_24_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 26 px
|
||||
* Bpp: 3
|
||||
@ -4322,7 +4323,7 @@ lv_font_t robotocondensed_regular_26_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 28 px
|
||||
* Bpp: 3
|
||||
@ -4710,7 +4711,7 @@ lv_font_t robotocondensed_regular_28_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 1,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 32 px
|
||||
* Bpp: 3
|
||||
@ -5391,7 +5392,7 @@ lv_font_t robotocondensed_regular_32_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -2,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 36 px
|
||||
* Bpp: 3
|
||||
@ -6252,7 +6253,7 @@ lv_font_t robotocondensed_regular_36_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 38 px
|
||||
* Bpp: 3
|
||||
@ -6622,7 +6623,7 @@ lv_font_t robotocondensed_regular_38_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 40 px
|
||||
* Bpp: 3
|
||||
@ -7016,7 +7017,7 @@ lv_font_t robotocondensed_regular_40_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 44 px
|
||||
* Bpp: 3
|
||||
@ -7754,7 +7755,7 @@ lv_font_t robotocondensed_regular_44_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -3,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* clang-format off */
|
||||
/* clang-format off */
|
||||
/*******************************************************************************
|
||||
* Size: 48 px
|
||||
* Bpp: 3
|
||||
@ -8315,7 +8316,7 @@ lv_font_t robotocondensed_regular_48_latin2 = {
|
||||
#if !(LVGL_VERSION_MAJOR == 6 && LVGL_VERSION_MINOR == 0)
|
||||
.subpx = LV_FONT_SUBPX_NONE,
|
||||
#endif
|
||||
#if LV_VERSION_CHECK(7, 4, 0)
|
||||
#if LV_VERSION_CHECK(7, 4, 0) || LV_VERSION_CHECK(8, 0, 0)
|
||||
.underline_position = -4,
|
||||
.underline_thickness = 2,
|
||||
#endif
|
||||
|
@ -85,13 +85,13 @@ lv_style_t style_mbox_bg; /*Black bg. style with opacity*/
|
||||
lv_obj_t* kb;
|
||||
// lv_font_t * defaultFont;
|
||||
|
||||
static lv_font_t* haspFonts[12] = {nullptr};
|
||||
uint8_t current_page = 1;
|
||||
static const lv_font_t* haspFonts[12] = {nullptr};
|
||||
uint8_t current_page = 1;
|
||||
|
||||
/**
|
||||
* Get Font ID
|
||||
*/
|
||||
lv_font_t* hasp_get_font(uint8_t fontid)
|
||||
const lv_font_t* hasp_get_font(uint8_t fontid)
|
||||
{
|
||||
if(fontid >= sizeof(haspFonts) / sizeof(haspFonts[0])) {
|
||||
return nullptr;
|
||||
@ -230,16 +230,18 @@ void haspReconnect()
|
||||
// Shows/hides the the global progress bar and updates the value
|
||||
void haspProgressVal(uint8_t val)
|
||||
{
|
||||
return;
|
||||
|
||||
lv_obj_t* layer = lv_disp_get_layer_sys(NULL);
|
||||
lv_obj_t* bar = hasp_find_obj_from_page_id(255U, 10U);
|
||||
if(layer && bar) {
|
||||
if(val == 255) {
|
||||
if(!lv_obj_get_hidden(bar)) {
|
||||
lv_obj_set_hidden(bar, true);
|
||||
lv_obj_set_style_local_bg_opa(layer, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_0);
|
||||
lv_obj_set_style_bg_opa(layer, LV_PART_MAIN | LV_STATE_DEFAULT, LV_OPA_0);
|
||||
|
||||
// lv_obj_set_style_local_value_str(bar, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, "");
|
||||
// lv_obj_set_value_str_txt(bar, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, NULL);
|
||||
// lv_obj_set_style_value_str(bar, LV_PART_MAIN| LV_STATE_DEFAULT, "");
|
||||
// lv_obj_set_value_str_txt(bar, LV_PART_MAIN| LV_STATE_DEFAULT, NULL);
|
||||
// TODO: call our custom function to free the memory
|
||||
|
||||
#if defined(ARDUINO_ARCH_ESP32) || defined(ARDUINO_ARCH_ESP8266)
|
||||
@ -249,7 +251,7 @@ void haspProgressVal(uint8_t val)
|
||||
} else {
|
||||
if(lv_obj_get_hidden(bar)) {
|
||||
lv_obj_set_hidden(bar, false);
|
||||
lv_obj_set_style_local_bg_opa(layer, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, LV_OPA_100);
|
||||
lv_obj_set_style_bg_opa(layer, LV_PART_MAIN | LV_STATE_DEFAULT, LV_OPA_100);
|
||||
}
|
||||
lv_bar_set_value(bar, val, LV_ANIM_OFF);
|
||||
}
|
||||
@ -263,7 +265,7 @@ void haspProgressMsg(const char* msg)
|
||||
if(lv_obj_t* bar = hasp_find_obj_from_page_id(255U, 10U)) {
|
||||
char value_str[10];
|
||||
snprintf_P(value_str, sizeof(value_str), PSTR("value_str"));
|
||||
hasp_process_obj_attribute(bar, value_str, msg, true);
|
||||
// hasp_process_obj_attribute(bar, value_str, msg, true);
|
||||
}
|
||||
|
||||
lv_task_handler(); // needed to let the GUI do its work during long updates
|
||||
@ -271,7 +273,7 @@ void haspProgressMsg(const char* msg)
|
||||
/* if(bar) {
|
||||
progress_str.reserve(64);
|
||||
progress_str = msg;
|
||||
lv_obj_set_style_local_value_str(bar, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, progress_str.c_str());
|
||||
lv_obj_set_style_value_str(bar, LV_PART_MAIN| LV_STATE_DEFAULT, progress_str.c_str());
|
||||
|
||||
// lv_task_handler(); // let the GUI do its work
|
||||
} */
|
||||
@ -286,23 +288,24 @@ void haspProgressMsg(const __FlashStringHelper* msg)
|
||||
#endif
|
||||
|
||||
/*Add a custom apply callback*/
|
||||
static void custom_font_apply_cb(lv_theme_t* th, lv_obj_t* obj, lv_theme_style_t name)
|
||||
{
|
||||
/* lv_style_list_t* list;
|
||||
// static void custom_font_apply_cb(lv_theme_t* th, lv_obj_t* obj, lv_theme_style_t name)
|
||||
// {
|
||||
// /* lv_style_list_t* list;
|
||||
|
||||
switch(name) {
|
||||
case LV_THEME_BTN:
|
||||
list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN);
|
||||
// _lv_style_list_add_style(list, &my_style);
|
||||
break;
|
||||
default:
|
||||
// nothing
|
||||
;
|
||||
} */
|
||||
}
|
||||
// switch(name) {
|
||||
// case LV_THEME_BTN:
|
||||
// list = lv_obj_get_style_list(obj, LV_BTN_PART_MAIN);
|
||||
// // _lv_style_list_add_style(list, &my_style);
|
||||
// break;
|
||||
// default:
|
||||
// // nothing
|
||||
// ;
|
||||
// } */
|
||||
// }
|
||||
|
||||
void hasp_set_theme(uint8_t themeid)
|
||||
{
|
||||
lv_disp_t* disp = lv_disp_get_default();
|
||||
lv_theme_t* th = NULL;
|
||||
lv_color_t color_primary = lv_color_hsv_to_rgb(haspThemeHue, 100, 100);
|
||||
lv_color_t color_secondary = lv_color_hsv_to_rgb(haspThemeHue, 100, 100);
|
||||
@ -322,6 +325,12 @@ void hasp_set_theme(uint8_t themeid)
|
||||
uint32_t material_flags = LV_THEME_MATERIAL_FLAG_LIGHT + LV_THEME_MATERIAL_FLAG_NO_TRANSITION;
|
||||
#endif
|
||||
|
||||
#if(LV_USE_THEME_DEFAULT == 1)
|
||||
// LV_THEME_MATERIAL_FLAG_NO_TRANSITION : disable transitions(state change animations)
|
||||
// LV_THEME_MATERIAL_FLAG_NO_FOCUS: disable indication of focused state)
|
||||
uint32_t material_flags = LV_THEME_DEFAULT_DARK;
|
||||
#endif
|
||||
|
||||
switch(themeid) {
|
||||
#if(LV_USE_THEME_EMPTY == 1)
|
||||
case 0:
|
||||
@ -343,8 +352,7 @@ void hasp_set_theme(uint8_t themeid)
|
||||
|
||||
#if(LV_USE_THEME_MONO == 1)
|
||||
case 3:
|
||||
th = lv_theme_mono_init(color_primary, color_secondary, LV_THEME_DEFAULT_FLAGS, haspFonts[0], haspFonts[1],
|
||||
haspFonts[2], haspFonts[3]);
|
||||
th = lv_theme_mono_init(disp, true, haspFonts[0]);
|
||||
break;
|
||||
#endif
|
||||
|
||||
@ -359,6 +367,15 @@ void hasp_set_theme(uint8_t themeid)
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if LV_USE_THEME_DEFAULT == 1
|
||||
case 5: // Dark
|
||||
// material_flags = LV_THEME_DEFAULT_FLAG_DARK;
|
||||
case 4: // Light
|
||||
case 9: // Light (old id)
|
||||
th = lv_theme_default_init(disp, color_primary, color_secondary, false, haspFonts[1]);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if LV_USE_THEME_TEMPLATE == 1
|
||||
case 7:
|
||||
th = lv_theme_template_init(LV_COLOR_PURPLE, LV_COLOR_ORANGE, LV_THEME_DEFAULT_FLAGS, haspFonts[0],
|
||||
@ -372,7 +389,8 @@ void hasp_set_theme(uint8_t themeid)
|
||||
}
|
||||
|
||||
if(th) {
|
||||
lv_theme_set_act(th);
|
||||
// lv_theme_set_act(th);
|
||||
lv_disp_set_theme(disp, th); /*Assign the theme to the display*/
|
||||
LOG_INFO(TAG_HASP, F("Custom theme loaded"));
|
||||
} else {
|
||||
LOG_ERROR(TAG_HASP, F("Theme could not be loaded"));
|
||||
|
@ -61,7 +61,7 @@ bool haspGetConfig(const JsonObject& settings);
|
||||
bool haspSetConfig(const JsonObject& settings);
|
||||
#endif
|
||||
|
||||
lv_font_t* hasp_get_font(uint8_t fontid);
|
||||
const lv_font_t* hasp_get_font(uint8_t fontid);
|
||||
|
||||
HASP_ATTRIBUTE_FAST_MEM void hasp_update_sleep_state();
|
||||
void hasp_get_sleep_state(char* payload);
|
||||
|
@ -8,6 +8,8 @@
|
||||
#include "hasplib.h"
|
||||
#include "hasp_attribute_helper.h"
|
||||
|
||||
#if LVGL_VERSION_MAJOR == 7
|
||||
|
||||
LV_FONT_DECLARE(unscii_8_icon);
|
||||
extern const char** btnmatrix_default_map; // memory pointer to lvgl default btnmatrix map
|
||||
|
||||
@ -258,7 +260,7 @@ static void hasp_attribute_get_part_state(lv_obj_t* obj, const char* attr_in, ch
|
||||
int len = strlen(attr_in);
|
||||
if(len <= 0 || len >= 32) {
|
||||
attr_out[0] = 0; // empty string
|
||||
part = LV_OBJ_PART_MAIN;
|
||||
part = LV_PART_MAIN;
|
||||
state = LV_STATE_DEFAULT;
|
||||
return;
|
||||
}
|
||||
@ -328,7 +330,7 @@ static void hasp_attribute_get_part_state(lv_obj_t* obj, const char* attr_in, ch
|
||||
break;
|
||||
|
||||
case LV_HASP_CPICKER:
|
||||
part = index == 1 ? LV_CPICKER_PART_KNOB : LV_CPICKER_PART_MAIN;
|
||||
part = index == 1 ? lv_colorwheel_PART_KNOB : lv_colorwheel_PART_MAIN;
|
||||
break;
|
||||
|
||||
case LV_HASP_ROLLER:
|
||||
@ -357,7 +359,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
const char* payload, bool update, int32_t& val)
|
||||
{
|
||||
char attr[32];
|
||||
uint8_t part = LV_OBJ_PART_MAIN;
|
||||
uint8_t part = LV_PART_MAIN;
|
||||
uint8_t state = LV_STATE_DEFAULT;
|
||||
int16_t var = atoi(payload);
|
||||
|
||||
@ -377,19 +379,19 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
case ATTR_BG_BLEND_MODE:
|
||||
return attribute_bg_blend_mode(obj, part, state, update, (lv_blend_mode_t)var, val);
|
||||
// case ATTR_TEXT_BLEND_MODE:
|
||||
// return lv_obj_set_style_local_text_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// return lv_obj_set_style_text_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// case ATTR_BORDER_BLEND_MODE:
|
||||
// return lv_obj_set_style_local_border_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// return lv_obj_set_style_border_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// case ATTR_OUTLINE_BLEND_MODE:
|
||||
// return lv_obj_set_style_local_outline_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// return lv_obj_set_style_outline_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// case ATTR_SHADOW_BLEND_MODE:
|
||||
// return lv_obj_set_style_local_shadow_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// return lv_obj_set_style_shadow_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// case ATTR_LINE_BLEND_MODE:
|
||||
// return lv_obj_set_style_local_line_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// return lv_obj_set_style_line_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// case ATTR_VALUE_BLEND_MODE:
|
||||
// return lv_obj_set_style_local_value_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// return lv_obj_set_style_value_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// case ATTR_PATTERN_BLEND_MODE:
|
||||
// return lv_obj_set_style_local_pattern_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
// return lv_obj_set_style_pattern_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
#endif
|
||||
|
||||
case ATTR_SIZE:
|
||||
@ -417,7 +419,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c) && part != 64)
|
||||
lv_obj_set_style_local_bg_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_bg_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_bg_color(obj, part));
|
||||
}
|
||||
@ -427,8 +429,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c))
|
||||
lv_obj_set_style_local_bg_grad_color(obj, part, state,
|
||||
lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_bg_grad_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_bg_grad_color(obj, part));
|
||||
}
|
||||
@ -466,8 +467,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c) && part != 64)
|
||||
lv_obj_set_style_local_scale_grad_color(obj, part, state,
|
||||
lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_scale_grad_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_scale_grad_color(obj, part));
|
||||
}
|
||||
@ -477,8 +477,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c))
|
||||
lv_obj_set_style_local_scale_end_color(obj, part, state,
|
||||
lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_scale_end_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_scale_end_color(obj, part));
|
||||
}
|
||||
@ -505,7 +504,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c))
|
||||
lv_obj_set_style_local_text_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_text_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_text_color(obj, part));
|
||||
}
|
||||
@ -515,8 +514,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c))
|
||||
lv_obj_set_style_local_text_sel_color(obj, part, state,
|
||||
lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_text_sel_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_text_sel_color(obj, part));
|
||||
}
|
||||
@ -528,14 +526,14 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
LOG_WARNING(TAG_ATTR, "%s %d %x", __FILE__, __LINE__, *font);
|
||||
uint8_t count = 3;
|
||||
if(obj_check_type(obj, LV_HASP_ROLLER)) count = my_roller_get_visible_row_count(obj);
|
||||
lv_obj_set_style_local_text_font(obj, part, state, font);
|
||||
lv_obj_set_style_text_font(obj, part, state, font);
|
||||
if(obj_check_type(obj, LV_HASP_ROLLER)) lv_roller_set_visible_row_count(obj, count);
|
||||
lv_obj_set_style_local_text_font(obj, part, state, font); // again, for roller
|
||||
lv_obj_set_style_text_font(obj, part, state, font); // again, for roller
|
||||
|
||||
if(obj_check_type(obj, LV_HASP_DROPDOWN)) { // issue #43
|
||||
lv_obj_set_style_local_text_font(obj, LV_DROPDOWN_PART_MAIN, state, font);
|
||||
lv_obj_set_style_local_text_font(obj, LV_DROPDOWN_PART_LIST, state, font);
|
||||
lv_obj_set_style_local_text_font(obj, LV_DROPDOWN_PART_SELECTED, state, font);
|
||||
lv_obj_set_style_text_font(obj, LV_DROPDOWN_PART_MAIN, state, font);
|
||||
lv_obj_set_style_text_font(obj, LV_DROPDOWN_PART_LIST, state, font);
|
||||
lv_obj_set_style_text_font(obj, LV_DROPDOWN_PART_SELECTED, state, font);
|
||||
};
|
||||
|
||||
} else {
|
||||
@ -558,8 +556,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c))
|
||||
lv_obj_set_style_local_border_color(obj, part, state,
|
||||
lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_border_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_border_color(obj, part));
|
||||
}
|
||||
@ -577,8 +574,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c))
|
||||
lv_obj_set_style_local_outline_color(obj, part, state,
|
||||
lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_outline_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_outline_color(obj, part));
|
||||
}
|
||||
@ -601,8 +597,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c))
|
||||
lv_obj_set_style_local_shadow_color(obj, part, state,
|
||||
lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_shadow_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_shadow_color(obj, part));
|
||||
}
|
||||
@ -626,7 +621,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c))
|
||||
lv_obj_set_style_local_line_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_line_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_line_color(obj, part));
|
||||
}
|
||||
@ -658,8 +653,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c))
|
||||
lv_obj_set_style_local_value_color(obj, part, state,
|
||||
lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_value_color(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_value_color(obj, part));
|
||||
}
|
||||
@ -668,7 +662,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
case ATTR_VALUE_FONT: {
|
||||
lv_font_t* font = haspPayloadToFont(payload);
|
||||
if(font) {
|
||||
lv_obj_set_style_local_value_font(obj, part, state, font);
|
||||
lv_obj_set_style_value_font(obj, part, state, font);
|
||||
} else {
|
||||
LOG_WARNING(TAG_ATTR, F("Unknown Font ID %s"), attr_p);
|
||||
}
|
||||
@ -687,8 +681,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c))
|
||||
lv_obj_set_style_local_pattern_recolor(obj, part, state,
|
||||
lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_pattern_recolor(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_pattern_recolor(obj, part));
|
||||
}
|
||||
@ -696,7 +689,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
}
|
||||
|
||||
case ATTR_PATTERN_IMAGE:
|
||||
// return lv_obj_set_style_local_pattern_image(obj, part, state, (constvoid *)var);
|
||||
// return lv_obj_set_style_pattern_image(obj, part, state, (constvoid *)var);
|
||||
// return;
|
||||
|
||||
/* Image attributes */
|
||||
@ -708,8 +701,7 @@ static hasp_attribute_type_t hasp_local_style_attr(lv_obj_t* obj, const char* at
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c))
|
||||
lv_obj_set_style_local_image_recolor(obj, part, state,
|
||||
lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_obj_set_style_image_recolor(obj, part, state, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
attr_out_color(obj, attr, lv_obj_get_style_image_recolor(obj, part));
|
||||
}
|
||||
@ -930,6 +922,8 @@ static inline bool do_attribute(T& list, lv_obj_t* obj, uint16_t attr_hash, int3
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static hasp_attribute_type_t special_attribute_src(lv_obj_t* obj, const char* payload, char** text, bool update)
|
||||
{
|
||||
if(!obj_check_type(obj, LV_HASP_IMAGE)) return HASP_ATTR_TYPE_NOT_FOUND;
|
||||
@ -939,10 +933,14 @@ static hasp_attribute_type_t special_attribute_src(lv_obj_t* obj, const char* pa
|
||||
lv_img_set_src(obj, payload);
|
||||
} else {
|
||||
switch(lv_img_src_get_type(obj)) {
|
||||
case LV_IMG_SRC_FILE:
|
||||
*text = (char*)lv_img_get_file_name(obj);
|
||||
case LV_IMG_SRC_FILE: {
|
||||
*text = (((lv_img_t*)obj)->src_type == LV_IMG_SRC_FILE) ? (char*)lv_img_get_src(obj) : (char*)"";
|
||||
// *text = (char*)lv_img_get_file_name(obj);
|
||||
break;
|
||||
}
|
||||
case LV_IMG_SRC_SYMBOL:
|
||||
*text = (char*)lv_img_get_src(obj);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return HASP_ATTR_TYPE_STR;
|
||||
@ -951,20 +949,35 @@ static hasp_attribute_type_t special_attribute_src(lv_obj_t* obj, const char* pa
|
||||
static hasp_attribute_type_t attribute_common_align(lv_obj_t* obj, const char* attr, const char* payload, char** text,
|
||||
bool update)
|
||||
{
|
||||
lv_label_align_t val;
|
||||
lv_text_align_t val;
|
||||
|
||||
if(update) {
|
||||
if(!strcasecmp_P(payload, PSTR("left"))) {
|
||||
val = LV_LABEL_ALIGN_LEFT;
|
||||
val = LV_TEXT_ALIGN_LEFT;
|
||||
} else if(!strcasecmp_P(payload, PSTR("right"))) {
|
||||
val = LV_LABEL_ALIGN_RIGHT;
|
||||
val = LV_TEXT_ALIGN_RIGHT;
|
||||
} else if(!strcasecmp_P(payload, PSTR("center"))) {
|
||||
val = LV_LABEL_ALIGN_CENTER;
|
||||
val = LV_TEXT_ALIGN_CENTER;
|
||||
} else if(!strcasecmp_P(payload, PSTR("auto"))) {
|
||||
val = LV_LABEL_ALIGN_AUTO;
|
||||
val = LV_TEXT_ALIGN_AUTO;
|
||||
} else {
|
||||
val = atoi(payload);
|
||||
if(val > LV_LABEL_ALIGN_AUTO) return HASP_ATTR_TYPE_ALIGN_INVALID;
|
||||
switch(val) {
|
||||
case 0:
|
||||
val = LV_TEXT_ALIGN_LEFT;
|
||||
break;
|
||||
case 1:
|
||||
val = LV_TEXT_ALIGN_CENTER;
|
||||
break;
|
||||
case 2:
|
||||
val = LV_TEXT_ALIGN_RIGHT;
|
||||
break;
|
||||
case 3:
|
||||
val = LV_TEXT_ALIGN_AUTO;
|
||||
break;
|
||||
default:
|
||||
return HASP_ATTR_TYPE_ALIGN_INVALID;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -973,9 +986,9 @@ static hasp_attribute_type_t attribute_common_align(lv_obj_t* obj, const char* a
|
||||
lv_obj_t* label = FindButtonLabel(obj);
|
||||
if(label) {
|
||||
if(update)
|
||||
lv_label_set_align(label, val);
|
||||
lv_obj_set_style_text_align(label, val, LV_PART_MAIN);
|
||||
else
|
||||
val = lv_label_get_align(label);
|
||||
val = lv_obj_get_style_text_align(label, LV_PART_MAIN);
|
||||
} else {
|
||||
return HASP_ATTR_TYPE_NOT_FOUND; // not found
|
||||
}
|
||||
@ -983,23 +996,17 @@ static hasp_attribute_type_t attribute_common_align(lv_obj_t* obj, const char* a
|
||||
}
|
||||
case LV_HASP_BTNMATRIX:
|
||||
if(update)
|
||||
lv_btnmatrix_set_align(obj, val);
|
||||
lv_obj_set_style_text_align(obj, val, LV_PART_ITEMS);
|
||||
else
|
||||
val = lv_btnmatrix_get_align(obj);
|
||||
val = lv_obj_get_style_text_align(obj, LV_PART_ITEMS);
|
||||
break;
|
||||
|
||||
case LV_HASP_LABEL:
|
||||
if(update)
|
||||
lv_label_set_align(obj, val);
|
||||
else
|
||||
val = lv_label_get_align(obj);
|
||||
break;
|
||||
|
||||
case LV_HASP_ROLLER:
|
||||
if(update)
|
||||
lv_roller_set_align(obj, val);
|
||||
lv_obj_set_style_text_align(obj, val, LV_PART_MAIN);
|
||||
else
|
||||
val = lv_roller_get_align(obj);
|
||||
val = lv_obj_get_style_text_align(obj, LV_PART_MAIN);
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -1008,22 +1015,24 @@ static hasp_attribute_type_t attribute_common_align(lv_obj_t* obj, const char* a
|
||||
|
||||
// return values
|
||||
switch(val) {
|
||||
case LV_LABEL_ALIGN_AUTO:
|
||||
strcpy_P(*text, PSTR("auto"));
|
||||
case LV_TEXT_ALIGN_LEFT:
|
||||
strcpy_P(*text, PSTR("left"));
|
||||
break;
|
||||
case LV_LABEL_ALIGN_CENTER:
|
||||
case LV_TEXT_ALIGN_CENTER:
|
||||
strcpy_P(*text, PSTR("center"));
|
||||
break;
|
||||
case LV_LABEL_ALIGN_RIGHT:
|
||||
case LV_TEXT_ALIGN_RIGHT:
|
||||
strcpy_P(*text, PSTR("right"));
|
||||
break;
|
||||
default:
|
||||
strcpy_P(*text, PSTR("left"));
|
||||
strcpy_P(*text, PSTR("auto"));
|
||||
}
|
||||
|
||||
return HASP_ATTR_TYPE_STR;
|
||||
}
|
||||
|
||||
#if LVGL_VERSION_MAJOR == 7
|
||||
|
||||
static hasp_attribute_type_t attribute_common_mode(lv_obj_t* obj, const char* payload, char** text, int32_t& val,
|
||||
bool update)
|
||||
{
|
||||
@ -1058,57 +1067,6 @@ static hasp_attribute_type_t attribute_common_mode(lv_obj_t* obj, const char* pa
|
||||
return HASP_ATTR_TYPE_NOT_FOUND;
|
||||
}
|
||||
|
||||
static hasp_attribute_type_t attribute_common_text(lv_obj_t* obj, const char* attr, const char* payload, char** text,
|
||||
bool update)
|
||||
{
|
||||
uint8_t obj_type = obj_get_type(obj);
|
||||
|
||||
hasp_attr_update_char_const_t list[] = {
|
||||
{LV_HASP_BUTTON, ATTR_TEXT, my_btn_set_text, my_btn_get_text},
|
||||
{LV_HASP_LABEL, ATTR_TEXT, my_label_set_text, my_label_get_text},
|
||||
{LV_HASP_CHECKBOX, ATTR_TEXT, lv_checkbox_set_text, lv_checkbox_get_text},
|
||||
{LV_HASP_TABVIEW, ATTR_TEXT, my_tabview_set_text, my_tabview_get_text},
|
||||
{LV_HASP_TAB, ATTR_TEXT, my_tab_set_text, my_tab_get_text},
|
||||
#if LV_USE_WIN != 0
|
||||
{LV_HASP_WINDOW, ATTR_TEXT, lv_win_set_title, lv_win_get_title},
|
||||
#endif
|
||||
{LV_HASP_MSGBOX, ATTR_TEXT, lv_msgbox_set_text, lv_msgbox_get_text}
|
||||
};
|
||||
|
||||
for(int i = 0; i < sizeof(list) / sizeof(list[0]); i++) {
|
||||
if(obj_type == list[i].obj_type) {
|
||||
if(update)
|
||||
list[i].set(obj, payload);
|
||||
else
|
||||
*text = (char*)list[i].get(obj);
|
||||
|
||||
return HASP_ATTR_TYPE_STR;
|
||||
}
|
||||
}
|
||||
|
||||
// Special cases
|
||||
// {LV_HASP_DROPDOWN, set_text_not_implemented, my_dropdown_get_text},
|
||||
// {LV_HASP_ROLLER, set_text_not_implemented, my_roller_get_text},
|
||||
switch(obj_get_type(obj)) {
|
||||
case LV_HASP_DROPDOWN: {
|
||||
lv_dropdown_get_selected_str(obj, *text, 128);
|
||||
if(update) return HASP_ATTR_TYPE_STR_READONLY;
|
||||
break;
|
||||
}
|
||||
|
||||
case LV_HASP_ROLLER: {
|
||||
lv_roller_get_selected_str(obj, *text, 128);
|
||||
if(update) return HASP_ATTR_TYPE_STR_READONLY;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
return HASP_ATTR_TYPE_NOT_FOUND;
|
||||
}
|
||||
|
||||
return HASP_ATTR_TYPE_STR;
|
||||
}
|
||||
|
||||
static hasp_attribute_type_t specific_options_attribute(lv_obj_t* obj, const char* payload, char** text, bool update)
|
||||
{
|
||||
switch(obj_get_type(obj)) {
|
||||
@ -1348,7 +1306,7 @@ static hasp_attribute_type_t attribute_common_val(lv_obj_t* obj, int32_t& val, b
|
||||
else
|
||||
lv_obj_clear_state(obj, LV_STATE_CHECKED);
|
||||
} else {
|
||||
val = lv_obj_get_state(obj, LV_BTN_PART_MAIN) & LV_STATE_CHECKED;
|
||||
val = lv_obj_get_state(obj) & LV_STATE_CHECKED;
|
||||
}
|
||||
} else {
|
||||
return HASP_ATTR_TYPE_NOT_FOUND; // not checkable
|
||||
@ -1621,6 +1579,59 @@ static hasp_attribute_type_t attribute_common_method(lv_obj_t* obj, uint16_t att
|
||||
return HASP_ATTR_TYPE_METHOD_OK;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
static hasp_attribute_type_t attribute_common_text(lv_obj_t* obj, const char* attr, const char* payload, char** text,
|
||||
bool update)
|
||||
{
|
||||
uint8_t obj_type = obj_get_type(obj);
|
||||
|
||||
hasp_attr_update_char_const_t list[] = {
|
||||
// {LV_HASP_BUTTON, ATTR_TEXT, my_btn_set_text, my_btn_get_text},
|
||||
{LV_HASP_LABEL, ATTR_TEXT, my_label_set_text, my_label_get_text},
|
||||
{LV_HASP_CHECKBOX, ATTR_TEXT, lv_checkbox_set_text, lv_checkbox_get_text} //,
|
||||
// {LV_HASP_TABVIEW, ATTR_TEXT, my_tabview_set_text, my_tabview_get_text},
|
||||
// {LV_HASP_TAB, ATTR_TEXT, my_tab_set_text, my_tab_get_text},
|
||||
#if LV_USE_WIN != 0
|
||||
// {LV_HASP_WINDOW, ATTR_TEXT, lv_win_set_title, lv_win_get_title},
|
||||
#endif
|
||||
// {LV_HASP_MSGBOX, ATTR_TEXT, lv_msgbox_set_text, lv_msgbox_get_text}
|
||||
};
|
||||
|
||||
for(int i = 0; i < sizeof(list) / sizeof(list[0]); i++) {
|
||||
if(obj_type == list[i].obj_type) {
|
||||
if(update)
|
||||
list[i].set(obj, payload);
|
||||
else
|
||||
*text = (char*)list[i].get(obj);
|
||||
|
||||
return HASP_ATTR_TYPE_STR;
|
||||
}
|
||||
}
|
||||
|
||||
// Special cases
|
||||
// {LV_HASP_DROPDOWN, set_text_not_implemented, my_dropdown_get_text},
|
||||
// {LV_HASP_ROLLER, set_text_not_implemented, my_roller_get_text},
|
||||
switch(obj_get_type(obj)) {
|
||||
case LV_HASP_DROPDOWN: {
|
||||
lv_dropdown_get_selected_str(obj, *text, 128);
|
||||
if(update) return HASP_ATTR_TYPE_STR_READONLY;
|
||||
break;
|
||||
}
|
||||
|
||||
case LV_HASP_ROLLER: {
|
||||
lv_roller_get_selected_str(obj, *text, 128);
|
||||
if(update) return HASP_ATTR_TYPE_STR_READONLY;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
return HASP_ATTR_TYPE_NOT_FOUND;
|
||||
}
|
||||
|
||||
return HASP_ATTR_TYPE_STR;
|
||||
}
|
||||
|
||||
/**
|
||||
* Change or Retrieve the value of the attribute of an object
|
||||
* @param obj lv_obj_t*: the object to get/set the attribute
|
||||
@ -1632,31 +1643,31 @@ static hasp_attribute_type_t attribute_common_method(lv_obj_t* obj, uint16_t att
|
||||
static hasp_attribute_type_t attribute_common_int(lv_obj_t* obj, uint16_t attr_hash, int32_t& val, bool update)
|
||||
{
|
||||
switch(attr_hash) {
|
||||
case ATTR_ID:
|
||||
if(update)
|
||||
obj->user_data.id = (uint8_t)val;
|
||||
else
|
||||
val = obj->user_data.id;
|
||||
break; // attribute_found
|
||||
// case ATTR_ID:
|
||||
// if(update)
|
||||
// obj->user_data.id = (uint8_t)val;
|
||||
// else
|
||||
// val = obj->user_data.id;
|
||||
// break; // attribute_found
|
||||
|
||||
case ATTR_GROUPID:
|
||||
if(update)
|
||||
obj->user_data.groupid = (uint8_t)val;
|
||||
else
|
||||
val = obj->user_data.groupid;
|
||||
break; // attribute_found
|
||||
// case ATTR_GROUPID:
|
||||
// if(update)
|
||||
// obj->user_data.groupid = (uint8_t)val;
|
||||
// else
|
||||
// val = obj->user_data.groupid;
|
||||
// break; // attribute_found
|
||||
|
||||
case ATTR_TRANSITION:
|
||||
if(update)
|
||||
obj->user_data.transitionid = (uint8_t)val;
|
||||
else
|
||||
val = obj->user_data.transitionid;
|
||||
break; // attribute_found
|
||||
// case ATTR_TRANSITION:
|
||||
// if(update)
|
||||
// obj->user_data.transitionid = (uint8_t)val;
|
||||
// else
|
||||
// val = obj->user_data.transitionid;
|
||||
// break; // attribute_found
|
||||
|
||||
case ATTR_OBJID:
|
||||
val = obj->user_data.objid;
|
||||
if(update && val != obj->user_data.objid) HASP_ATTR_TYPE_INT_READONLY;
|
||||
break; // attribute_found
|
||||
// case ATTR_OBJID:
|
||||
// val = obj->user_data.objid;
|
||||
// if(update && val != obj->user_data.objid) HASP_ATTR_TYPE_INT_READONLY;
|
||||
// break; // attribute_found
|
||||
|
||||
case ATTR_X:
|
||||
if(update)
|
||||
@ -1677,8 +1688,9 @@ static hasp_attribute_type_t attribute_common_int(lv_obj_t* obj, uint16_t attr_h
|
||||
lv_obj_set_width(obj, val);
|
||||
if(obj_check_type(obj, LV_HASP_CPICKER)) {
|
||||
#if LVGL_VERSION_MAJOR == 7
|
||||
lv_cpicker_set_type(obj, lv_obj_get_width(obj) == lv_obj_get_height(obj) ? LV_CPICKER_TYPE_DISC
|
||||
: LV_CPICKER_TYPE_RECT);
|
||||
lv_colorwheel_set_type(obj, lv_obj_get_width(obj) == lv_obj_get_height(obj)
|
||||
? lv_colorwheel_TYPE_DISC
|
||||
: lv_colorwheel_TYPE_RECT);
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
@ -1691,8 +1703,9 @@ static hasp_attribute_type_t attribute_common_int(lv_obj_t* obj, uint16_t attr_h
|
||||
lv_obj_set_height(obj, val);
|
||||
if(obj_check_type(obj, LV_HASP_CPICKER)) {
|
||||
#if LVGL_VERSION_MAJOR == 7
|
||||
lv_cpicker_set_type(obj, lv_obj_get_width(obj) == lv_obj_get_height(obj) ? LV_CPICKER_TYPE_DISC
|
||||
: LV_CPICKER_TYPE_RECT);
|
||||
lv_colorwheel_set_type(obj, lv_obj_get_width(obj) == lv_obj_get_height(obj)
|
||||
? lv_colorwheel_TYPE_DISC
|
||||
: lv_colorwheel_TYPE_RECT);
|
||||
#endif
|
||||
}
|
||||
} else {
|
||||
@ -1702,26 +1715,27 @@ static hasp_attribute_type_t attribute_common_int(lv_obj_t* obj, uint16_t attr_h
|
||||
|
||||
case ATTR_OPACITY:
|
||||
if(update)
|
||||
lv_obj_set_style_local_opa_scale(obj, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, val);
|
||||
lv_obj_set_style_opa(obj, LV_PART_MAIN | LV_STATE_DEFAULT, val);
|
||||
else
|
||||
val = lv_obj_get_style_opa_scale(obj, LV_OBJ_PART_MAIN);
|
||||
val = lv_obj_get_style_opa(obj, LV_OBJ_PART_MAIN);
|
||||
break; // attribute_found
|
||||
|
||||
case ATTR_EXT_CLICK_H:
|
||||
if(update)
|
||||
lv_obj_set_ext_click_area(obj, val, val, lv_obj_get_ext_click_pad_top(obj),
|
||||
lv_obj_get_ext_click_pad_bottom(obj));
|
||||
else
|
||||
val = lv_obj_get_ext_click_pad_left(obj);
|
||||
break; // attribute_found
|
||||
// case ATTR_EXT_CLICK_H:
|
||||
// if(update)
|
||||
// lv_obj_set_ext_click_area(obj, val, val, lv_obj_get_ext_click_pad_top(obj),
|
||||
// lv_obj_get_ext_click_pad_bottom(obj));
|
||||
// else
|
||||
// val = lv_obj_get_ext_click_pad_left(obj);
|
||||
// break; // attribute_found
|
||||
|
||||
case ATTR_EXT_CLICK_V:
|
||||
if(update)
|
||||
lv_obj_set_ext_click_area(obj, lv_obj_get_ext_click_pad_left(obj), lv_obj_get_ext_click_pad_right(obj),
|
||||
val, val);
|
||||
else
|
||||
val = lv_obj_get_ext_click_pad_top(obj);
|
||||
break; // attribute_found
|
||||
// case ATTR_EXT_CLICK_V:
|
||||
// if(update)
|
||||
// lv_obj_set_ext_click_area(obj, lv_obj_get_ext_click_pad_left(obj),
|
||||
// lv_obj_get_ext_click_pad_right(obj),
|
||||
// val, val);
|
||||
// else
|
||||
// val = lv_obj_get_ext_click_pad_top(obj);
|
||||
// break; // attribute_found
|
||||
|
||||
default:
|
||||
return HASP_ATTR_TYPE_NOT_FOUND; // attribute_not found
|
||||
@ -1769,15 +1783,15 @@ static hasp_attribute_type_t attribute_common_bool(lv_obj_t* obj, uint16_t attr_
|
||||
else
|
||||
lv_obj_add_state(obj, LV_STATE_DISABLED);
|
||||
else
|
||||
val = !(lv_obj_get_state(obj, LV_BTN_PART_MAIN) & LV_STATE_DISABLED);
|
||||
val = !(lv_obj_get_state(obj) & LV_STATE_DISABLED);
|
||||
break; // attribute_found
|
||||
|
||||
case ATTR_SWIPE:
|
||||
if(update)
|
||||
obj->user_data.swipeid = (!!val) % 16;
|
||||
else
|
||||
val = obj->user_data.swipeid;
|
||||
break; // attribute_found
|
||||
// case ATTR_SWIPE:
|
||||
// if(update)
|
||||
// obj->user_data.swipeid = (!!val) % 16;
|
||||
// else
|
||||
// val = obj->user_data.swipeid;
|
||||
// break; // attribute_found
|
||||
|
||||
case ATTR_TOGGLE:
|
||||
switch(obj_get_type(obj)) {
|
||||
@ -1795,7 +1809,7 @@ static hasp_attribute_type_t attribute_common_bool(lv_obj_t* obj, uint16_t attr_
|
||||
lv_btnmatrix_set_btn_ctrl_all(obj, LV_BTNMATRIX_CTRL_CHECKABLE);
|
||||
} else {
|
||||
lv_btnmatrix_clear_btn_ctrl_all(obj, LV_BTNMATRIX_CTRL_CHECKABLE);
|
||||
lv_btnmatrix_clear_btn_ctrl_all(obj, LV_BTNMATRIX_CTRL_CHECK_STATE);
|
||||
lv_btnmatrix_clear_btn_ctrl_all(obj, LV_BTNMATRIX_CTRL_CHECKED);
|
||||
}
|
||||
} else {
|
||||
val = lv_btn_get_checkable(obj);
|
||||
@ -1926,17 +1940,17 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attribute, const char
|
||||
|
||||
case ATTR_MIN:
|
||||
val = strtol(payload, nullptr, DEC);
|
||||
ret = attribute_common_range(obj, val, update, true, false);
|
||||
// ret = attribute_common_range(obj, val, update, true, false);
|
||||
break;
|
||||
|
||||
case ATTR_MAX:
|
||||
val = strtol(payload, nullptr, DEC);
|
||||
ret = attribute_common_range(obj, val, update, false, true);
|
||||
// ret = attribute_common_range(obj, val, update, false, true);
|
||||
break;
|
||||
|
||||
case ATTR_VAL:
|
||||
val = strtol(payload, nullptr, DEC);
|
||||
ret = attribute_common_val(obj, val, update);
|
||||
// ret = attribute_common_val(obj, val, update);
|
||||
break;
|
||||
|
||||
case ATTR_TXT: // TODO: remove
|
||||
@ -1958,21 +1972,24 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attribute, const char
|
||||
break;
|
||||
|
||||
case ATTR_MODE:
|
||||
ret = attribute_common_mode(obj, payload, &text, val, update);
|
||||
// ret = attribute_common_mode(obj, payload, &text, val, update);
|
||||
break;
|
||||
|
||||
case ATTR_OPTIONS:
|
||||
ret = specific_options_attribute(obj, payload, &text, update);
|
||||
// ret = specific_options_attribute(obj, payload, &text, update);
|
||||
break;
|
||||
|
||||
// case ATTR_BTN_POS:
|
||||
|
||||
case ATTR_ACTION:
|
||||
if(update)
|
||||
obj->user_data.actionid = Parser::get_action_id(payload);
|
||||
else
|
||||
val = obj->user_data.actionid;
|
||||
ret = HASP_ATTR_TYPE_INT;
|
||||
if(obj->user_data) {
|
||||
lv_obj_user_data_t* user_data = (lv_obj_user_data_t*)obj->user_data;
|
||||
if(update)
|
||||
user_data->actionid = Parser::get_action_id(payload);
|
||||
else
|
||||
val = user_data->actionid;
|
||||
ret = HASP_ATTR_TYPE_INT;
|
||||
}
|
||||
break;
|
||||
|
||||
// case ATTR_SYMBOL:
|
||||
@ -1986,7 +2003,7 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attribute, const char
|
||||
case ATTR_TO_BACK:
|
||||
case ATTR_OPEN:
|
||||
case ATTR_CLOSE:
|
||||
ret = attribute_common_method(obj, attr_hash, attribute, payload);
|
||||
// ret = attribute_common_method(obj, attr_hash, attribute, payload);
|
||||
break;
|
||||
|
||||
case ATTR_COMMENT:
|
||||
@ -2009,14 +2026,14 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attribute, const char
|
||||
case ATTR_COUNT:
|
||||
case ATTR_BTN_POS:
|
||||
val = strtol(payload, nullptr, DEC);
|
||||
ret = specific_int_attribute(obj, attr_hash, val, update);
|
||||
// ret = specific_int_attribute(obj, attr_hash, val, update);
|
||||
break;
|
||||
|
||||
case ATTR_OFFSET_X:
|
||||
case ATTR_OFFSET_Y:
|
||||
case ATTR_MAX_HEIGHT:
|
||||
val = strtol(payload, nullptr, DEC);
|
||||
ret = specific_coord_attribute(obj, attr_hash, val, update);
|
||||
// ret = specific_coord_attribute(obj, attr_hash, val, update);
|
||||
break;
|
||||
|
||||
case ATTR_ADJUSTABLE:
|
||||
@ -2025,19 +2042,19 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attribute, const char
|
||||
case ATTR_SHOW_SELECTED:
|
||||
case ATTR_Y_INVERT:
|
||||
val = Parser::is_true(payload);
|
||||
ret = specific_bool_attribute(obj, attr_hash, val, update);
|
||||
// ret = specific_bool_attribute(obj, attr_hash, val, update);
|
||||
break;
|
||||
|
||||
case ATTR_NEXT:
|
||||
case ATTR_PREV:
|
||||
case ATTR_BACK:
|
||||
val = strtol(payload, nullptr, DEC);
|
||||
ret = specific_page_attribute(obj, attr_hash, val, update);
|
||||
// ret = specific_page_attribute(obj, attr_hash, val, update);
|
||||
break;
|
||||
|
||||
case ATTR_DIRECTION:
|
||||
val = strtol(payload, nullptr, DEC);
|
||||
ret = special_attribute_direction(obj, attr_hash, val, update);
|
||||
// ret = special_attribute_direction(obj, attr_hash, val, update);
|
||||
break;
|
||||
|
||||
case ATTR_SRC:
|
||||
@ -2045,7 +2062,7 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attribute, const char
|
||||
break;
|
||||
|
||||
default: {
|
||||
ret = hasp_local_style_attr(obj, attribute, attr_hash, payload, update, val);
|
||||
// ret = hasp_local_style_attr(obj, attribute, attr_hash, payload, update, val);
|
||||
}
|
||||
}
|
||||
|
||||
@ -2054,22 +2071,22 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attribute, const char
|
||||
|
||||
case LV_HASP_ARC:
|
||||
val = strtol(payload, nullptr, DEC);
|
||||
ret = hasp_process_arc_attribute(obj, attr_hash, val, update);
|
||||
// ret = hasp_process_arc_attribute(obj, attr_hash, val, update);
|
||||
break;
|
||||
|
||||
case LV_HASP_GAUGE:
|
||||
val = strtol(payload, nullptr, DEC);
|
||||
ret = hasp_process_gauge_attribute(obj, attr_hash, val, update);
|
||||
// ret = hasp_process_gauge_attribute(obj, attr_hash, val, update);
|
||||
break;
|
||||
|
||||
case LV_HASP_LINEMETER:
|
||||
val = strtol(payload, nullptr, DEC);
|
||||
ret = hasp_process_lmeter_attribute(obj, attr_hash, val, update);
|
||||
// ret = hasp_process_lmeter_attribute(obj, attr_hash, val, update);
|
||||
break;
|
||||
|
||||
case LV_HASP_LINE:
|
||||
if(attr_hash == ATTR_POINTS)
|
||||
ret = my_line_set_points(obj, payload) ? HASP_ATTR_TYPE_METHOD_OK : HASP_ATTR_TYPE_RANGE_ERROR;
|
||||
// if(attr_hash == ATTR_POINTS)
|
||||
// ret = my_line_set_points(obj, payload) ? HASP_ATTR_TYPE_METHOD_OK : HASP_ATTR_TYPE_RANGE_ERROR;
|
||||
break;
|
||||
|
||||
case LV_HASP_CPICKER:
|
||||
@ -2077,9 +2094,9 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attribute, const char
|
||||
if(update) {
|
||||
lv_color32_t c;
|
||||
if(Parser::haspPayloadToColor(payload, c))
|
||||
lv_cpicker_set_color(obj, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
lv_colorwheel_set_rgb(obj, lv_color_make(c.ch.red, c.ch.green, c.ch.blue));
|
||||
} else {
|
||||
color = lv_cpicker_get_color(obj);
|
||||
color = lv_colorwheel_get_rgb(obj);
|
||||
}
|
||||
ret = HASP_ATTR_TYPE_COLOR;
|
||||
}
|
||||
|
@ -6,6 +6,19 @@
|
||||
|
||||
#include "hasplib.h"
|
||||
|
||||
static inline void lv_obj_set_event_cb(lv_obj_t* obj, lv_event_cb_t cb)
|
||||
{
|
||||
lv_obj_add_event_cb(obj, cb, LV_EVENT_ALL, NULL);
|
||||
}
|
||||
#define lv_style_int_t lv_coord_t
|
||||
#define lv_anim_value_t lv_coord_t
|
||||
|
||||
void attr_out_str(lv_obj_t* obj, const char* attribute, const char* data);
|
||||
void attr_out_int(lv_obj_t* obj, const char* attribute, int32_t val);
|
||||
void attr_out_color(lv_obj_t* obj, const char* attribute, lv_color_t color);
|
||||
|
||||
#if LVGL_VERSION_MAJOR >= 7
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
@ -21,10 +34,6 @@ void hasp_process_obj_attribute(lv_obj_t* obj, const char* attr_p, const char* p
|
||||
|
||||
bool attribute_set_normalized_value(lv_obj_t* obj, hasp_update_value_t& value);
|
||||
|
||||
void attr_out_str(lv_obj_t* obj, const char* attribute, const char* data);
|
||||
void attr_out_int(lv_obj_t* obj, const char* attribute, int32_t val);
|
||||
void attr_out_color(lv_obj_t* obj, const char* attribute, lv_color_t color);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
@ -143,45 +152,118 @@ struct hasp_attr_update_char_const_t
|
||||
const char* (*get)(const lv_obj_t*);
|
||||
};
|
||||
|
||||
#define _HASP_ATTRIBUTE_OLD(prop_name, func_name, value_type) \
|
||||
static inline void attribute_##func_name(lv_obj_t* obj, uint8_t part, lv_state_t state, bool update, \
|
||||
const char* attr, value_type val) \
|
||||
#define _HASP_ATTRIBUTE_V7(prop_name, func_name, value_type) \
|
||||
static inline hasp_attribute_type_t attribute_##func_name(lv_obj_t* obj, uint8_t part, lv_state_t state, \
|
||||
bool update, value_type val, int32_t& res) \
|
||||
{ \
|
||||
if(update) { \
|
||||
return lv_obj_set_style_local_##func_name(obj, part, state, (value_type)val); \
|
||||
} else { \
|
||||
value_type temp = lv_obj_get_style_##func_name(obj, part); \
|
||||
/*lv_obj_get_style_##func_name(obj, part, state, &temp);*/ \
|
||||
return attr_out_int(obj, attr, temp); \
|
||||
} \
|
||||
if(update) lv_obj_set_style_##func_name(obj, part, state, (value_type)val); \
|
||||
res = (int32_t)lv_obj_get_style_##func_name(obj, part); \
|
||||
return HASP_ATTR_TYPE_INT; \
|
||||
}
|
||||
|
||||
#define _HASP_ATTRIBUTE(prop_name, func_name, value_type) \
|
||||
static inline hasp_attribute_type_t attribute_##func_name(lv_obj_t* obj, uint8_t part, lv_state_t state, \
|
||||
bool update, value_type val, int32_t& res) \
|
||||
{ \
|
||||
if(update) lv_obj_set_style_local_##func_name(obj, part, state, (value_type)val); \
|
||||
if(update) lv_obj_set_style_##func_name(obj, (value_type)val, part); \
|
||||
res = (int32_t)lv_obj_get_style_##func_name(obj, part); \
|
||||
return HASP_ATTR_TYPE_INT; \
|
||||
}
|
||||
|
||||
_HASP_ATTRIBUTE(RADIUS, radius, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(ALIGN, align, lv_align_t)
|
||||
_HASP_ATTRIBUTE(ANIM_SPEED, anim_speed, uint32_t)
|
||||
_HASP_ATTRIBUTE(ANIM_TIME, anim_time, uint32_t)
|
||||
// _HASP_ATTRIBUTE(ARC_COLOR, arc_color, lv_color_t)
|
||||
// _HASP_ATTRIBUTE(ARC_COLOR_FILTERED, arc_color_filtered, lv_color_t)
|
||||
_HASP_ATTRIBUTE(ARC_IMG_SRC, arc_img_src, const void*)
|
||||
_HASP_ATTRIBUTE(ARC_OPA, arc_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(ARC_ROUNDED, arc_rounded, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(ARC_WIDTH, arc_width, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(BASE_DIR, base_dir, lv_base_dir_t)
|
||||
// _HASP_ATTRIBUTE(BG_COLOR, bg_color, lv_color_t)
|
||||
// _HASP_ATTRIBUTE(BG_COLOR_FILTERED, bg_color_filtered, lv_color_t)
|
||||
// _HASP_ATTRIBUTE(BG_GRAD_COLOR, bg_grad_color, lv_color_t)
|
||||
// _HASP_ATTRIBUTE(BG_GRAD_COLOR_FILTERED, bg_grad_color_filtered, lv_color_t)
|
||||
_HASP_ATTRIBUTE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t)
|
||||
_HASP_ATTRIBUTE(BG_GRAD_STOP, bg_grad_stop, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(BG_IMG_OPA, bg_img_opa, lv_opa_t)
|
||||
// _HASP_ATTRIBUTE(BG_IMG_RECOLOR, bg_img_recolor, lv_color_t)
|
||||
// _HASP_ATTRIBUTE(BG_IMG_RECOLOR_FILTERED, bg_img_recolor_filtered, lv_color_t)
|
||||
_HASP_ATTRIBUTE(BG_IMG_RECOLOR_OPA, bg_img_recolor_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(BG_IMG_SRC, bg_img_src, const void*)
|
||||
_HASP_ATTRIBUTE(BG_IMG_TILED, bg_img_tiled, bool)
|
||||
_HASP_ATTRIBUTE(BG_MAIN_STOP, bg_main_stop, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(BG_OPA, bg_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(BLEND_MODE, blend_mode, lv_blend_mode_t)
|
||||
// _HASP_ATTRIBUTE(BORDER_COLOR, border_color, lv_color_t)
|
||||
// _HASP_ATTRIBUTE(BORDER_COLOR_FILTERED, border_color_filtered, lv_color_t)
|
||||
_HASP_ATTRIBUTE(BORDER_OPA, border_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(BORDER_POST, border_post, bool)
|
||||
_HASP_ATTRIBUTE(BORDER_SIDE, border_side, lv_border_side_t)
|
||||
_HASP_ATTRIBUTE(BORDER_WIDTH, border_width, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(CLIP_CORNER, clip_corner, bool)
|
||||
_HASP_ATTRIBUTE(SIZE, size, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSFORM_WIDTH, transform_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(OPA_SCALE, opa_scale, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(MARGIN_TOP, margin_top, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(MARGIN_BOTTOM, margin_bottom, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(MARGIN_LEFT, margin_left, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(MARGIN_RIGHT, margin_right, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(PAD_TOP, pad_top, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(PAD_BOTTOM, pad_bottom, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(PAD_LEFT, pad_left, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(PAD_RIGHT, pad_right, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(COLOR_FILTER_DSC, color_filter_dsc, const lv_color_filter_dsc_t*)
|
||||
_HASP_ATTRIBUTE(COLOR_FILTER_OPA, color_filter_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(HEIGHT, height, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(IMG_OPA, img_opa, lv_opa_t)
|
||||
// _HASP_ATTRIBUTE(IMG_RECOLOR, img_recolor, lv_color_t)
|
||||
// _HASP_ATTRIBUTE(IMG_RECOLOR_FILTERED, img_recolor_filtered, lv_color_t)
|
||||
_HASP_ATTRIBUTE(IMG_RECOLOR_OPA, img_recolor_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(LAYOUT, layout, uint16_t)
|
||||
// _HASP_ATTRIBUTE(LINE_COLOR, line_color, lv_color_t)
|
||||
// _HASP_ATTRIBUTE(LINE_COLOR_FILTERED, line_color_filtered, lv_color_t)
|
||||
_HASP_ATTRIBUTE(LINE_DASH_GAP, line_dash_gap, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(LINE_DASH_WIDTH, line_dash_width, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(LINE_OPA, line_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(LINE_ROUNDED, line_rounded, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(LINE_WIDTH, line_width, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(MAX_HEIGHT, max_height, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(MAX_WIDTH, max_width, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(MIN_HEIGHT, min_height, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(MIN_WIDTH, min_width, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(OPA, opa, lv_opa_t)
|
||||
// _HASP_ATTRIBUTE(OUTLINE_COLOR, outline_color, lv_color_t)
|
||||
// _HASP_ATTRIBUTE(OUTLINE_COLOR_FILTERED, outline_color_filtered, lv_color_t)
|
||||
_HASP_ATTRIBUTE(OUTLINE_OPA, outline_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(OUTLINE_PAD, outline_pad, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(OUTLINE_WIDTH, outline_width, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(PAD_BOTTOM, pad_bottom, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(PAD_COLUMN, pad_column, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(PAD_LEFT, pad_left, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(PAD_RIGHT, pad_right, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(PAD_ROW, pad_row, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(PAD_TOP, pad_top, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(RADIUS, radius, lv_coord_t)
|
||||
// _HASP_ATTRIBUTE(SHADOW_COLOR, shadow_color, lv_color_t)
|
||||
// _HASP_ATTRIBUTE(SHADOW_COLOR_FILTERED, shadow_color_filtered, lv_color_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_OFS_X, shadow_ofs_x, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_OFS_Y, shadow_ofs_y, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_OPA, shadow_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_SPREAD, shadow_spread, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_WIDTH, shadow_width, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(TEXT_ALIGN, text_align, lv_text_align_t)
|
||||
// _HASP_ATTRIBUTE(TEXT_COLOR, text_color, lv_color_t)
|
||||
// _HASP_ATTRIBUTE(TEXT_COLOR_FILTERED, text_color_filtered, lv_color_t)
|
||||
_HASP_ATTRIBUTE(TEXT_DECOR, text_decor, lv_text_decor_t)
|
||||
_HASP_ATTRIBUTE(TEXT_FONT, text_font, const lv_font_t*)
|
||||
_HASP_ATTRIBUTE(TEXT_LETTER_SPACE, text_letter_space, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(TEXT_LINE_SPACE, text_line_space, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(TEXT_OPA, text_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(TRANSFORM_ANGLE, transform_angle, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(TRANSFORM_HEIGHT, transform_height, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(TRANSFORM_WIDTH, transform_width, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(TRANSFORM_ZOOM, transform_zoom, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION, transition, const lv_style_transition_dsc_t*)
|
||||
_HASP_ATTRIBUTE(TRANSLATE_X, translate_x, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(TRANSLATE_Y, translate_y, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(WIDTH, width, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(X, x, lv_coord_t)
|
||||
_HASP_ATTRIBUTE(Y, y, lv_coord_t)
|
||||
|
||||
#if LVGL_VERSION_MAJOR == 7
|
||||
_HASP_ATTRIBUTE(PAD_INNER, pad_inner, lv_style_int_t)
|
||||
#endif
|
||||
|
||||
#if LV_USE_BLEND_MODES
|
||||
_HASP_ATTRIBUTE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t)
|
||||
@ -193,21 +275,7 @@ _HASP_ATTRIBUTE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(LINE_BLEND_MODE, line_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t)
|
||||
#endif
|
||||
_HASP_ATTRIBUTE(BG_MAIN_STOP, bg_main_stop, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(BG_GRAD_STOP, bg_grad_stop, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t)
|
||||
//_HASP_ATTRIBUTE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
|
||||
//_HASP_ATTRIBUTE(BG_GRAD_COLOR, bg_grad_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(BG_OPA, bg_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(BORDER_WIDTH, border_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(BORDER_SIDE, border_side, lv_border_side_t)
|
||||
_HASP_ATTRIBUTE(BORDER_POST, border_post, bool)
|
||||
//_HASP_ATTRIBUTE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(BORDER_OPA, border_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(OUTLINE_WIDTH, outline_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(OUTLINE_PAD, outline_pad, lv_style_int_t)
|
||||
//_HASP_ATTRIBUTE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(OUTLINE_OPA, outline_opa, lv_opa_t)
|
||||
|
||||
#if LV_USE_SHADOW
|
||||
_HASP_ATTRIBUTE(SHADOW_WIDTH, shadow_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t)
|
||||
@ -216,51 +284,6 @@ _HASP_ATTRIBUTE(SHADOW_SPREAD, shadow_spread, lv_style_int_t)
|
||||
//_HASP_ATTRIBUTE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(SHADOW_OPA, shadow_opa, lv_opa_t)
|
||||
#endif
|
||||
_HASP_ATTRIBUTE(PATTERN_REPEAT, pattern_repeat, bool)
|
||||
//_HASP_ATTRIBUTE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(PATTERN_OPA, pattern_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(PATTERN_RECOLOR_OPA, pattern_recolor_opa, lv_opa_t)
|
||||
//_HASP_ATTRIBUTE(PATTERN_IMAGE, pattern_image, const void *, _data_ptr, scalar)
|
||||
_HASP_ATTRIBUTE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(VALUE_LINE_SPACE, value_line_space, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(VALUE_OFS_X, value_ofs_x, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(VALUE_ALIGN, value_align, lv_align_t)
|
||||
//_HASP_ATTRIBUTE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(VALUE_OPA, value_opa, lv_opa_t)
|
||||
//_HASP_ATTRIBUTE(VALUE_FONT, value_font, const lv_font_t *, _data_ptr, scalar)
|
||||
//_HASP_ATTRIBUTE(VALUE_STR, value_str, const char *, _data_ptr, scalar)
|
||||
_HASP_ATTRIBUTE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TEXT_DECOR, text_decor, lv_text_decor_t)
|
||||
//_HASP_ATTRIBUTE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
|
||||
//_HASP_ATTRIBUTE(TEXT_SEL_COLOR, text_sel_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(TEXT_OPA, text_opa, lv_opa_t)
|
||||
//_HASP_ATTRIBUTE(TEXT_FONT, text_font, const lv_font_t *, _data_ptr, scalar)
|
||||
_HASP_ATTRIBUTE(LINE_WIDTH, line_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(LINE_DASH_WIDTH, line_dash_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(LINE_DASH_GAP, line_dash_gap, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(LINE_ROUNDED, line_rounded, bool)
|
||||
//_HASP_ATTRIBUTE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(LINE_OPA, line_opa, lv_opa_t)
|
||||
//_HASP_ATTRIBUTE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(IMAGE_OPA, image_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(IMAGE_RECOLOR_OPA, image_recolor_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_TIME, transition_time, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_DELAY, transition_delay, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_PROP_2, transition_prop_2, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_PROP_3, transition_prop_3, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t)
|
||||
|
||||
_HASP_ATTRIBUTE(SCALE_WIDTH, scale_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SCALE_BORDER_WIDTH, scale_border_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SCALE_END_BORDER_WIDTH, scale_end_border_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t)
|
||||
//_HASP_ATTRIBUTE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar)
|
||||
//_HASP_ATTRIBUTE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar)
|
||||
|
||||
/* attribute hashes */
|
||||
/* Object Part Attributes */
|
||||
@ -487,3 +510,5 @@ _HASP_ATTRIBUTE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t)
|
||||
#define ATTR_TEXT_SSID 62981
|
||||
|
||||
#endif
|
||||
|
||||
#endif
|
@ -3,6 +3,8 @@
|
||||
|
||||
#include "hasplib.h"
|
||||
|
||||
#if LVGL_VERSION_MAJOR == 7
|
||||
|
||||
const char* my_tabview_get_tab_name(const lv_obj_t* tabview, uint16_t id)
|
||||
{
|
||||
if(id >= lv_tabview_get_tab_count(tabview)) return NULL;
|
||||
@ -115,19 +117,18 @@ lv_coord_t my_dropdown_get_max_height(lv_obj_t* obj)
|
||||
return lv_dropdown_get_max_height(obj);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
// OK
|
||||
lv_obj_t* FindButtonLabel(lv_obj_t* btn)
|
||||
lv_obj_t* FindButtonLabel(const lv_obj_t* btn)
|
||||
{
|
||||
if(btn) {
|
||||
lv_obj_t* label = lv_obj_get_child_back(btn, NULL);
|
||||
if(label) {
|
||||
if(obj_check_type(label, LV_HASP_LABEL)) {
|
||||
return label;
|
||||
}
|
||||
|
||||
} else {
|
||||
LOG_ERROR(TAG_ATTR, F("FindButtonLabel NULL Pointer encountered"));
|
||||
for(uint32_t i = 0; i < lv_obj_get_child_cnt(btn); i++) {
|
||||
lv_obj_t* child = lv_obj_get_child(btn, i);
|
||||
if(lv_obj_check_type(child, &lv_label_class)) return child;
|
||||
}
|
||||
|
||||
LOG_ERROR(TAG_ATTR, F("FindButtonLabel NULL Pointer encountered"));
|
||||
} else {
|
||||
LOG_WARNING(TAG_ATTR, F("Button not defined"));
|
||||
}
|
||||
@ -186,30 +187,13 @@ static void my_label_set_text(lv_obj_t* label, const char* text)
|
||||
// OK
|
||||
static const char* my_btn_get_text(const lv_obj_t* obj)
|
||||
{
|
||||
if(!obj) {
|
||||
LOG_WARNING(TAG_ATTR, F("Button not defined"));
|
||||
return NULL;
|
||||
}
|
||||
|
||||
lv_obj_t* label = lv_obj_get_child_back(obj, NULL);
|
||||
if(label) {
|
||||
#if 1
|
||||
if(obj_check_type(label, LV_HASP_LABEL)) return lv_label_get_text(label);
|
||||
|
||||
#else
|
||||
lv_obj_type_t list;
|
||||
lv_obj_get_type(label, &list);
|
||||
|
||||
if(obj_check_type(list.type[0], LV_HASP_LABEL)) {
|
||||
text = lv_label_get_text(label);
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
} else {
|
||||
if(obj) {
|
||||
const lv_obj_t* label = FindButtonLabel(obj);
|
||||
if(label) return lv_label_get_text(label);
|
||||
LOG_WARNING(TAG_ATTR, F("my_btn_get_text NULL Pointer encountered"));
|
||||
} else {
|
||||
LOG_WARNING(TAG_ATTR, F("Button not defined"));
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -217,11 +201,11 @@ static const char* my_btn_get_text(const lv_obj_t* obj)
|
||||
static inline void my_btn_set_text(lv_obj_t* obj, const char* value)
|
||||
{
|
||||
lv_obj_t* label = FindButtonLabel(obj);
|
||||
if(label) {
|
||||
my_label_set_text(label, value);
|
||||
}
|
||||
if(label) my_label_set_text(label, value);
|
||||
}
|
||||
|
||||
#if LVGL_VERSION_MAJOR == 7
|
||||
|
||||
/**
|
||||
* Set a new value_str for an object. Memory will be allocated to store the text by the object.
|
||||
* @param obj pointer to a object
|
||||
@ -229,6 +213,8 @@ static inline void my_btn_set_text(lv_obj_t* obj, const char* value)
|
||||
*/
|
||||
void my_obj_set_value_str_text(lv_obj_t* obj, uint8_t part, lv_state_t state, const char* text)
|
||||
{
|
||||
|
||||
#if 0
|
||||
// LOG_VERBOSE(TAG_ATTR, F("%s %d"), __FILE__, __LINE__);
|
||||
|
||||
const void* value_str_p = lv_obj_get_style_value_str(obj, part);
|
||||
@ -236,7 +222,7 @@ void my_obj_set_value_str_text(lv_obj_t* obj, uint8_t part, lv_state_t state, co
|
||||
|
||||
if(text == NULL || text[0] == 0) {
|
||||
// LOG_VERBOSE(TAG_ATTR, F("%s %d"), __FILE__, __LINE__);
|
||||
lv_obj_set_style_local_value_str(obj, part, state, NULL);
|
||||
lv_obj_set_style_value_str(obj, part, state, NULL);
|
||||
lv_mem_free(value_str_p);
|
||||
// LOG_VERBOSE(TAG_ATTR, F("%s %d"), __FILE__, __LINE__);
|
||||
return;
|
||||
@ -256,12 +242,12 @@ void my_obj_set_value_str_text(lv_obj_t* obj, uint8_t part, lv_state_t state, co
|
||||
|
||||
// LOG_VERBOSE(TAG_ATTR, F("%s %d"), __FILE__, __LINE__);
|
||||
strncpy((char*)value_str_p, text, len);
|
||||
lv_obj_set_style_local_value_str(obj, part, state, (char*)value_str_p);
|
||||
lv_obj_set_style_value_str(obj, part, state, (char*)value_str_p);
|
||||
// LOG_VERBOSE(TAG_ATTR, F("%s %d"), __FILE__, __LINE__);
|
||||
return;
|
||||
}
|
||||
|
||||
// lv_obj_set_style_local_value_str(obj, part, state, str_p);
|
||||
// lv_obj_set_style_value_str(obj, part, state, str_p);
|
||||
|
||||
if(value_str_p == text) {
|
||||
/*If set its own text then reallocate it (maybe its size changed)*/
|
||||
@ -288,10 +274,11 @@ void my_obj_set_value_str_text(lv_obj_t* obj, uint8_t part, lv_state_t state, co
|
||||
value_str_p = lv_mem_alloc(len);
|
||||
LV_ASSERT_MEM(value_str_p);
|
||||
if(value_str_p != NULL) strcpy((char*)value_str_p, text);
|
||||
lv_obj_set_style_local_value_str(obj, part, state, (char*)value_str_p);
|
||||
lv_obj_set_style_value_str(obj, part, state, (char*)value_str_p);
|
||||
}
|
||||
|
||||
// LOG_VERBOSE(TAG_ATTR, F("%s %d"), __FILE__, __LINE__);
|
||||
#endif
|
||||
}
|
||||
|
||||
void my_list_set_options(lv_obj_t* obj, const char* payload)
|
||||
@ -572,7 +559,7 @@ static bool attribute_update_lv_property(lv_obj_t * obj, const char * attr_p, ui
|
||||
|
||||
if(prop_type < LV_STYLE_ID_COLOR) {
|
||||
if(update) {
|
||||
_lv_obj_set_style_local_int(obj, part, prop | (state << LV_STYLE_STATE_POS), atoi(payload))
|
||||
_lv_obj_set_style_int(obj, part, prop | (state << LV_STYLE_STATE_POS), atoi(payload))
|
||||
} else {
|
||||
attr_out_str(obj, attr_p, lv_obj_get_style_value_str(obj, part));
|
||||
}
|
||||
@ -582,3 +569,4 @@ static bool attribute_update_lv_property(lv_obj_t * obj, const char * attr_p, ui
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#endif // LVGL_VERSION_MAJOR == 7
|
||||
|
@ -27,33 +27,41 @@
|
||||
|
||||
#include "hasplib.h"
|
||||
|
||||
#if LVGL_VERSION_MAJOR == 7
|
||||
#include "lv_core/lv_obj.h" // for tabview ext
|
||||
#else
|
||||
#include "core/lv_obj.h" // for tabview ext
|
||||
#endif
|
||||
|
||||
static lv_style_int_t last_value_sent;
|
||||
static lv_color_t last_color_sent;
|
||||
|
||||
void swipe_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||
void swipe_event_handler(lv_event_t* e);
|
||||
|
||||
/**
|
||||
* Clean-up allocated memory before an object is deleted
|
||||
* @param obj pointer to an object to clean-up
|
||||
*/
|
||||
void delete_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
void delete_event_handler(lv_event_t* e)
|
||||
{
|
||||
lv_event_code_t event = lv_event_get_code(e);
|
||||
|
||||
lv_obj_t* obj = (lv_obj_t*)lv_event_get_target(e);
|
||||
|
||||
if(event != LV_EVENT_DELETE) return;
|
||||
|
||||
switch(obj_get_type(obj)) {
|
||||
case LV_HASP_LINE:
|
||||
line_clear_points(obj);
|
||||
break;
|
||||
// case LV_HASP_LINE:
|
||||
// line_clear_points(obj);
|
||||
// break;
|
||||
|
||||
case LV_HASP_BTNMATRIX:
|
||||
my_btnmatrix_map_clear(obj);
|
||||
break;
|
||||
// case LV_HASP_BTNMATRIX:
|
||||
// my_btnmatrix_map_clear(obj);
|
||||
// break;
|
||||
|
||||
case LV_HASP_MSGBOX:
|
||||
my_msgbox_map_clear(obj);
|
||||
break;
|
||||
// case LV_HASP_MSGBOX:
|
||||
// my_msgbox_map_clear(obj);
|
||||
// break;
|
||||
|
||||
case LV_HASP_IMAGE:
|
||||
lv_img_cache_invalidate_src(NULL);
|
||||
@ -67,11 +75,11 @@ void delete_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
}
|
||||
|
||||
// TODO: delete value_str data for ALL parts
|
||||
my_obj_set_value_str_text(obj, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, NULL);
|
||||
// V8 my_obj_set_value_str_text(obj, LV_PART_MAIN| LV_STATE_DEFAULT, NULL);
|
||||
}
|
||||
|
||||
/* ============================== Timer Event ============================ */
|
||||
void event_timer_calendar(lv_task_t* task)
|
||||
void event_timer_calendar(lv_timer_t* task)
|
||||
{
|
||||
hasp_task_user_data_t* data = (hasp_task_user_data_t*)task->user_data;
|
||||
lv_obj_t* obj = NULL;
|
||||
@ -79,7 +87,7 @@ void event_timer_calendar(lv_task_t* task)
|
||||
if(data) obj = hasp_find_obj_from_page_id(data->pageid, data->objid);
|
||||
if(!obj || !data || !obj_check_type(obj, LV_HASP_CALENDER)) {
|
||||
if(data) lv_mem_free(data); // the object that the user_data points to is gone
|
||||
lv_task_del(task); // the calendar object for this task was deleted
|
||||
lv_timer_del(task); // the calendar object for this task was deleted
|
||||
LOG_WARNING(TAG_EVENT, "event_timer_calendar could not find the linked object");
|
||||
return;
|
||||
}
|
||||
@ -93,13 +101,13 @@ void event_timer_calendar(lv_task_t* task)
|
||||
(void)rslt; // unused
|
||||
|
||||
if(timeinfo->tm_year < 120) {
|
||||
lv_task_set_period(task, 60000); // try again in a minute
|
||||
lv_timer_set_period(task, 60000); // try again in a minute
|
||||
LOG_WARNING(TAG_EVENT, "event_timer_calendar could not sync the clock");
|
||||
return;
|
||||
} else {
|
||||
uint32_t next_hour = (3600 - (t % 3600)) * 1000; // ms to next top of hour
|
||||
// lv_task_set_period(task, next_hour + 128); // small offset so all tasks don't run at once
|
||||
lv_task_set_period(task, data->interval);
|
||||
// lv_timer_set_period(task, next_hour + 128); // small offset so all tasks don't run at once
|
||||
lv_timer_set_period(task, data->interval);
|
||||
}
|
||||
|
||||
date.day = timeinfo->tm_mday;
|
||||
@ -109,10 +117,10 @@ void event_timer_calendar(lv_task_t* task)
|
||||
LOG_VERBOSE(TAG_EVENT, "event_timer_calendar called with user %d:%d:%d", timeinfo->tm_hour, timeinfo->tm_min,
|
||||
timeinfo->tm_sec);
|
||||
|
||||
lv_calendar_set_today_date(obj, &date);
|
||||
lv_calendar_set_today_date(obj, date.year, date.month, date.day);
|
||||
}
|
||||
|
||||
void event_timer_clock(lv_task_t* task)
|
||||
void event_timer_clock(lv_timer_t* task)
|
||||
{
|
||||
hasp_task_user_data_t* data = (hasp_task_user_data_t*)task->user_data;
|
||||
lv_obj_t* obj;
|
||||
@ -120,7 +128,7 @@ void event_timer_clock(lv_task_t* task)
|
||||
if(data) obj = hasp_find_obj_from_page_id(data->pageid, data->objid);
|
||||
if(!obj || !data) {
|
||||
if(data) lv_mem_free(data); // the object that the user_data points to is gone
|
||||
lv_task_del(task); // the calendar object for this task was deleted
|
||||
lv_timer_del(task); // the calendar object for this task was deleted
|
||||
LOG_WARNING(TAG_EVENT, "event_timer_clock could not find the linked object");
|
||||
return;
|
||||
}
|
||||
@ -142,11 +150,11 @@ void event_timer_clock(lv_task_t* task)
|
||||
// timeinfo->tm_sec);
|
||||
|
||||
lv_label_set_text(obj, buffer);
|
||||
lv_task_set_period(task, data->interval);
|
||||
lv_timer_set_period(task, data->interval);
|
||||
}
|
||||
|
||||
/* ============================== Timer Event ============================ */
|
||||
void event_timer_refresh(lv_task_t* task)
|
||||
void event_timer_refresh(lv_timer_t* task)
|
||||
{
|
||||
lv_obj_t* obj = (lv_obj_t*)task->user_data;
|
||||
printf("event_timer_refresh called with user data\n");
|
||||
@ -168,16 +176,19 @@ void event_timer_refresh(lv_task_t* task)
|
||||
* @param event type of event that occured
|
||||
* @param eventid returns the hasp eventid
|
||||
*/
|
||||
static bool translate_event(lv_obj_t* obj, lv_event_t event, uint8_t& eventid)
|
||||
static bool translate_event(lv_event_t* e, uint8_t& eventid)
|
||||
{
|
||||
lv_event_code_t event = lv_event_get_code(e);
|
||||
lv_obj_t* obj = (lv_obj_t*)lv_event_get_target(e);
|
||||
|
||||
switch(event) {
|
||||
case LV_EVENT_GESTURE:
|
||||
swipe_event_handler(obj, event);
|
||||
swipe_event_handler(e);
|
||||
break;
|
||||
|
||||
case LV_EVENT_DELETE:
|
||||
LOG_VERBOSE(TAG_EVENT, F(D_OBJECT_DELETED));
|
||||
delete_event_handler(obj, event);
|
||||
delete_event_handler(e);
|
||||
break;
|
||||
|
||||
case LV_EVENT_PRESSED:
|
||||
@ -247,7 +258,7 @@ static inline void event_update_group(uint8_t group, lv_obj_t* obj, bool power,
|
||||
dispatch_normalized_group_values(value);
|
||||
}
|
||||
|
||||
static void log_event(const char* name, lv_event_t event)
|
||||
static void log_event(const char* name, lv_event_code_t event)
|
||||
{
|
||||
return;
|
||||
|
||||
@ -309,8 +320,11 @@ static void log_event(const char* name, lv_event_t event)
|
||||
* @param obj pointer to a button matrix
|
||||
* @param event type of event that occured
|
||||
*/
|
||||
void wakeup_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
void wakeup_event_handler(lv_event_t* e)
|
||||
{
|
||||
lv_event_code_t event = lv_event_get_code(e);
|
||||
lv_obj_t* obj = (lv_obj_t*)lv_event_get_target(e);
|
||||
|
||||
// log_event("wakeup", event);
|
||||
|
||||
if(event == LV_EVENT_RELEASED && obj == lv_disp_get_layer_sys(NULL)) {
|
||||
@ -322,20 +336,23 @@ void wakeup_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
}
|
||||
}
|
||||
|
||||
void swipe_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
void swipe_event_handler(lv_event_t* e)
|
||||
{
|
||||
if(!obj || obj->user_data.swipeid == 0) return;
|
||||
lv_event_code_t event = lv_event_get_code(e);
|
||||
lv_obj_t* obj = (lv_obj_t*)lv_event_get_target(e);
|
||||
lv_obj_user_data_t* user_data = (lv_obj_user_data_t*)obj->user_data;
|
||||
if(!obj || !user_data || user_data->swipeid == 0) return; // no swipe set
|
||||
|
||||
if(event == LV_EVENT_GESTURE) {
|
||||
lv_gesture_dir_t dir = lv_indev_get_gesture_dir(lv_indev_get_act());
|
||||
lv_dir_t dir = lv_indev_get_gesture_dir(lv_indev_get_act());
|
||||
switch(dir) {
|
||||
case LV_GESTURE_DIR_LEFT:
|
||||
case LV_DIR_LEFT:
|
||||
haspPages.next(LV_SCR_LOAD_ANIM_NONE);
|
||||
break;
|
||||
case LV_GESTURE_DIR_RIGHT:
|
||||
case LV_DIR_RIGHT:
|
||||
haspPages.prev(LV_SCR_LOAD_ANIM_NONE);
|
||||
break;
|
||||
case LV_GESTURE_DIR_BOTTOM:
|
||||
case LV_DIR_BOTTOM:
|
||||
haspPages.back(LV_SCR_LOAD_ANIM_NONE);
|
||||
break;
|
||||
default:
|
||||
@ -350,13 +367,16 @@ void swipe_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
* @param obj pointer to a button object
|
||||
* @param event type of event that occured
|
||||
*/
|
||||
void generic_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
void generic_event_handler(lv_event_t* e)
|
||||
{
|
||||
lv_event_code_t event = lv_event_get_code(e);
|
||||
lv_obj_t* obj = (lv_obj_t*)lv_event_get_target(e);
|
||||
|
||||
log_event("generic", event);
|
||||
|
||||
switch(event) {
|
||||
case LV_EVENT_GESTURE:
|
||||
swipe_event_handler(obj, event);
|
||||
swipe_event_handler(e);
|
||||
return;
|
||||
|
||||
case LV_EVENT_PRESSED:
|
||||
@ -394,9 +414,33 @@ void generic_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
|
||||
case LV_EVENT_DELETE:
|
||||
LOG_VERBOSE(TAG_EVENT, F(D_OBJECT_DELETED));
|
||||
delete_event_handler(obj, event); // free and destroy persistent memory allocated for certain objects
|
||||
delete_event_handler(e); // free and destroy persistent memory allocated for certain objects
|
||||
return;
|
||||
|
||||
case LV_EVENT_COVER_CHECK: /**< Check if the object fully covers an area. The event parameter is
|
||||
*`lv_cover_check_info_t
|
||||
*`.*/
|
||||
case LV_EVENT_REFR_EXT_DRAW_SIZE: /**< Get the required extra draw area around the object (e.g. for shadow). The
|
||||
event parameter is `lv_coord_t *` to store the size.*/
|
||||
case LV_EVENT_DRAW_MAIN_BEGIN: /**< Starting the main drawing phase*/
|
||||
case LV_EVENT_DRAW_MAIN: /**< Perform the main drawing*/
|
||||
case LV_EVENT_DRAW_MAIN_END: /**< Finishing the main drawing phase*/
|
||||
case LV_EVENT_DRAW_POST_BEGIN: /**< Starting the post draw phase (when all children are drawn)*/
|
||||
case LV_EVENT_DRAW_POST: /**< Perform the post draw phase (when all children are drawn)*/
|
||||
case LV_EVENT_DRAW_POST_END: /**< Finishing the post draw phase (when all children are drawn)*/
|
||||
case LV_EVENT_DRAW_PART_BEGIN: /**< Starting to draw a part. The event parameter is `lv_obj_draw_dsc_t
|
||||
*`. */
|
||||
case LV_EVENT_DRAW_PART_END: /**< Finishing to draw a part. The event parameter is `lv_obj_draw_dsc_t *`.
|
||||
*/
|
||||
return; // drawing events
|
||||
|
||||
case LV_EVENT_CHILD_CHANGED: /**< Child was removed/added*/
|
||||
case LV_EVENT_SIZE_CHANGED: /**< Object coordinates/size have changed*/
|
||||
case LV_EVENT_STYLE_CHANGED: /**< Object's style has changed*/
|
||||
case LV_EVENT_LAYOUT_CHANGED: /**< The children position has changed due to a layout recalculation*/
|
||||
case LV_EVENT_GET_SELF_SIZE: /**< Get the internal size of a widget*/
|
||||
return; // special events
|
||||
|
||||
case LV_EVENT_PRESSING:
|
||||
case LV_EVENT_FOCUSED:
|
||||
case LV_EVENT_DEFOCUSED:
|
||||
@ -411,10 +455,11 @@ void generic_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
if(last_value_sent == HASP_EVENT_LOST) return;
|
||||
|
||||
/* If an actionid is attached, perform that action on UP event only */
|
||||
if(obj->user_data.actionid) {
|
||||
lv_obj_user_data_t* user_data = (lv_obj_user_data_t*)obj->user_data;
|
||||
if(user_data->actionid) {
|
||||
if(last_value_sent == HASP_EVENT_UP || last_value_sent == HASP_EVENT_RELEASE) {
|
||||
lv_scr_load_anim_t transitionid = (lv_scr_load_anim_t)obj->user_data.transitionid;
|
||||
switch(obj->user_data.actionid) {
|
||||
lv_scr_load_anim_t transitionid = (lv_scr_load_anim_t)user_data->transitionid;
|
||||
switch(user_data->actionid) {
|
||||
case HASP_NUM_PAGE_PREV:
|
||||
haspPages.prev(transitionid);
|
||||
break;
|
||||
@ -425,7 +470,7 @@ void generic_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
haspPages.next(transitionid);
|
||||
break;
|
||||
default:
|
||||
haspPages.set(obj->user_data.actionid, transitionid);
|
||||
haspPages.set(user_data->actionid, transitionid);
|
||||
}
|
||||
dispatch_current_page();
|
||||
}
|
||||
@ -439,8 +484,9 @@ void generic_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
|
||||
// Update group objects and gpios on release
|
||||
if(last_value_sent != LV_EVENT_LONG_PRESSED || last_value_sent != LV_EVENT_LONG_PRESSED_REPEAT) {
|
||||
bool state = Parser::get_event_state(last_value_sent);
|
||||
event_update_group(obj->user_data.groupid, obj, state, state, HASP_EVENT_OFF, HASP_EVENT_ON);
|
||||
bool state = Parser::get_event_state(last_value_sent);
|
||||
lv_obj_user_data_t* user_data = (lv_obj_user_data_t*)obj->user_data;
|
||||
event_update_group(user_data->groupid, obj, state, state, HASP_EVENT_OFF, HASP_EVENT_ON);
|
||||
}
|
||||
}
|
||||
|
||||
@ -449,16 +495,20 @@ void generic_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
* @param obj pointer to a switch object
|
||||
* @param event type of event that occured
|
||||
*/
|
||||
void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
void toggle_event_handler(lv_event_t* e)
|
||||
{
|
||||
lv_event_code_t event = lv_event_get_code(e);
|
||||
lv_obj_t* obj = (lv_obj_t*)lv_event_get_target(e);
|
||||
|
||||
log_event("toggle", event);
|
||||
|
||||
uint8_t hasp_event_id;
|
||||
if(!translate_event(obj, event, hasp_event_id)) return;
|
||||
if(!translate_event(e, hasp_event_id)) return;
|
||||
if(hasp_event_id != HASP_EVENT_DOWN && hasp_event_id != HASP_EVENT_UP) return; // only up or down wanted
|
||||
|
||||
/* Get the new value */
|
||||
switch(obj->user_data.objid) {
|
||||
lv_obj_user_data_t* user_data = (lv_obj_user_data_t*)obj->user_data;
|
||||
switch(user_data->objid) {
|
||||
case LV_HASP_SWITCH:
|
||||
last_value_sent = lv_switch_get_state(obj);
|
||||
break;
|
||||
@ -466,12 +516,12 @@ void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
/* case LV_HASP_CHECKBOX:
|
||||
// This lvgl value is incorrect, it returns pressed instead of checked
|
||||
// last_value_sent = lv_checkbox_is_checked(obj);
|
||||
last_value_sent = lv_obj_get_state(obj, LV_BTN_PART_MAIN) & LV_STATE_CHECKED;
|
||||
last_value_sent = lv_obj_get_state(obj) & LV_STATE_CHECKED;
|
||||
break; */
|
||||
|
||||
case LV_HASP_CHECKBOX:
|
||||
case LV_HASP_BUTTON: {
|
||||
last_value_sent = lv_obj_get_state(obj, LV_BTN_PART_MAIN) & LV_STATE_CHECKED;
|
||||
last_value_sent = lv_obj_get_state(obj) & LV_STATE_CHECKED;
|
||||
break;
|
||||
}
|
||||
|
||||
@ -482,9 +532,8 @@ void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
event_object_val_event(obj, hasp_event_id, last_value_sent);
|
||||
|
||||
// Update group objects and gpios on release
|
||||
if(obj->user_data.groupid && hasp_event_id == HASP_EVENT_UP) {
|
||||
event_update_group(obj->user_data.groupid, obj, last_value_sent, last_value_sent, HASP_EVENT_OFF,
|
||||
HASP_EVENT_ON);
|
||||
if(user_data->groupid && hasp_event_id == HASP_EVENT_UP) {
|
||||
event_update_group(user_data->groupid, obj, last_value_sent, last_value_sent, HASP_EVENT_OFF, HASP_EVENT_ON);
|
||||
}
|
||||
}
|
||||
|
||||
@ -493,12 +542,15 @@ void toggle_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
* @param obj pointer to a dropdown list or roller
|
||||
* @param event type of event that occured
|
||||
*/
|
||||
void selector_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
void selector_event_handler(lv_event_t* e)
|
||||
{
|
||||
lv_event_code_t event = lv_event_get_code(e);
|
||||
lv_obj_t* obj = (lv_obj_t*)lv_event_get_target(e);
|
||||
|
||||
log_event("selector", event);
|
||||
|
||||
uint8_t hasp_event_id;
|
||||
if(!translate_event(obj, event, hasp_event_id)) return; // Use LV_EVENT_VALUE_CHANGED
|
||||
if(!translate_event(e, hasp_event_id)) return; // Use LV_EVENT_VALUE_CHANGED
|
||||
|
||||
/* Get the new value */
|
||||
char buffer[128];
|
||||
@ -507,7 +559,8 @@ void selector_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
uint16_t max = 0;
|
||||
|
||||
/* Get the text, val and max properties */
|
||||
switch(obj->user_data.objid) {
|
||||
lv_obj_user_data_t* user_data = (lv_obj_user_data_t*)obj->user_data;
|
||||
switch(user_data->objid) {
|
||||
case LV_HASP_DROPDOWN:
|
||||
val = lv_dropdown_get_selected(obj);
|
||||
max = lv_dropdown_get_option_cnt(obj) - 1;
|
||||
@ -521,26 +574,26 @@ void selector_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
break;
|
||||
|
||||
case LV_HASP_TABVIEW: {
|
||||
val = lv_tabview_get_tab_act(obj);
|
||||
max = lv_tabview_get_tab_count(obj) - 1;
|
||||
// val = lv_tabview_get_tab_act(obj);
|
||||
// max = lv_tabview_get_tab_count(obj) - 1;
|
||||
|
||||
lv_tabview_ext_t* ext = (lv_tabview_ext_t*)lv_obj_get_ext_attr(obj);
|
||||
strcpy(buffer, ext->tab_name_ptr[val]);
|
||||
// lv_tabview_ext_t* ext = (lv_tabview_ext_t*)lv_obj_get_ext_attr(obj);
|
||||
// strcpy(buffer, ext->tab_name_ptr[val]);
|
||||
break;
|
||||
}
|
||||
|
||||
case LV_HASP_TABLE: {
|
||||
uint16_t row;
|
||||
uint16_t col;
|
||||
if(lv_table_get_pressed_cell(obj, &row, &col) != LV_RES_OK) return; // outside any cell
|
||||
// case LV_HASP_TABLE: {
|
||||
// uint16_t row;
|
||||
// uint16_t col;
|
||||
// // if(lv_table_get_pressed_cell(obj, &row, &col) != LV_RES_OK) return; // outside any cell
|
||||
|
||||
const char* txt = lv_table_get_cell_value(obj, row, col);
|
||||
strncpy(buffer, txt, sizeof(buffer));
|
||||
// const char* txt = lv_table_get_cell_value(obj, row, col);
|
||||
// strncpy(buffer, txt, sizeof(buffer));
|
||||
|
||||
snprintf_P(property, sizeof(property), PSTR("row\":%d,\"col\":%d,\"text"), row, col);
|
||||
attr_out_str(obj, property, buffer);
|
||||
return; // done sending
|
||||
}
|
||||
// snprintf_P(property, sizeof(property), PSTR("row\":%d,\"col\":%d,\"text"), row, col);
|
||||
// attr_out_str(obj, property, buffer);
|
||||
// return; // done sending
|
||||
// }
|
||||
|
||||
default:
|
||||
return; // Invalid selector type
|
||||
@ -550,9 +603,9 @@ void selector_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
last_value_sent = val;
|
||||
event_object_selection_changed(obj, hasp_event_id, val, buffer);
|
||||
|
||||
if(obj->user_data.groupid && max > 0) // max a cannot be 0, its the divider
|
||||
if(user_data->groupid && max > 0) // max a cannot be 0, its the divider
|
||||
if(hasp_event_id == HASP_EVENT_UP || hasp_event_id == LV_EVENT_VALUE_CHANGED) {
|
||||
event_update_group(obj->user_data.groupid, obj, !!last_value_sent, last_value_sent, 0, max);
|
||||
event_update_group(user_data->groupid, obj, !!last_value_sent, last_value_sent, 0, max);
|
||||
}
|
||||
|
||||
// set the property
|
||||
@ -565,18 +618,21 @@ void selector_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
* @param obj pointer to a dropdown list or roller
|
||||
* @param event type of event that occured
|
||||
*/
|
||||
void btnmatrix_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
void btnmatrix_event_handler(lv_event_t* e)
|
||||
{
|
||||
lv_event_code_t event = lv_event_get_code(e);
|
||||
lv_obj_t* obj = (lv_obj_t*)lv_event_get_target(e);
|
||||
|
||||
log_event("btnmatrix", event);
|
||||
|
||||
uint8_t hasp_event_id;
|
||||
if(!translate_event(obj, event, hasp_event_id)) return; // Use LV_EVENT_VALUE_CHANGED
|
||||
if(!translate_event(e, hasp_event_id)) return; // Use LV_EVENT_VALUE_CHANGED
|
||||
|
||||
/* Get the new value */
|
||||
char buffer[128];
|
||||
uint16_t val = 0;
|
||||
|
||||
val = lv_btnmatrix_get_active_btn(obj);
|
||||
// val = lv_btnmatrix_get_active_btn(obj);
|
||||
if(val != LV_BTNMATRIX_BTN_NONE) {
|
||||
const char* txt = lv_btnmatrix_get_btn_text(obj, val);
|
||||
strncpy(buffer, txt, sizeof(buffer));
|
||||
@ -591,7 +647,7 @@ void btnmatrix_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
|
||||
// if(max > 0) // max a cannot be 0, its the divider
|
||||
// if(hasp_event_id == HASP_EVENT_UP || hasp_event_id == LV_EVENT_VALUE_CHANGED) {
|
||||
// event_update_group(obj->user_data.groupid, obj, last_value_sent, 0, max);
|
||||
// event_update_group(user_data->groupid, obj, last_value_sent, 0, max);
|
||||
// }
|
||||
}
|
||||
|
||||
@ -600,22 +656,25 @@ void btnmatrix_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
* @param obj pointer to a dropdown list or roller
|
||||
* @param event type of event that occured
|
||||
*/
|
||||
void msgbox_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
void msgbox_event_handler(lv_event_t* e)
|
||||
{
|
||||
lv_event_code_t event = lv_event_get_code(e);
|
||||
lv_obj_t* obj = lv_event_get_current_target(e);
|
||||
|
||||
log_event("msgbox", event);
|
||||
|
||||
uint8_t hasp_event_id;
|
||||
if(!translate_event(obj, event, hasp_event_id)) return; // Use LV_EVENT_VALUE_CHANGED
|
||||
if(!translate_event(e, hasp_event_id)) return; // Use LV_EVENT_VALUE_CHANGED
|
||||
|
||||
/* Get the new value */
|
||||
char buffer[128];
|
||||
uint16_t val = 0;
|
||||
|
||||
val = lv_msgbox_get_active_btn(obj);
|
||||
// val = lv_msgbox_get_active_btn(obj);
|
||||
if(val != LV_BTNMATRIX_BTN_NONE) {
|
||||
const char* txt = lv_msgbox_get_active_btn_text(obj);
|
||||
strncpy(buffer, txt, sizeof(buffer));
|
||||
if(hasp_event_id == HASP_EVENT_UP || hasp_event_id == HASP_EVENT_RELEASE) lv_msgbox_start_auto_close(obj, 0);
|
||||
if(hasp_event_id == HASP_EVENT_UP || hasp_event_id == HASP_EVENT_RELEASE) lv_msgbox_close(obj);
|
||||
} else {
|
||||
buffer[0] = 0; // empty string
|
||||
}
|
||||
@ -624,7 +683,7 @@ void msgbox_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
|
||||
last_value_sent = val;
|
||||
event_object_selection_changed(obj, hasp_event_id, val, buffer);
|
||||
// if(max > 0) event_update_group(obj->user_data.groupid, obj, val, 0, max);
|
||||
// if(max > 0) event_update_group(user_data->groupid, obj, val, 0, max);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -632,28 +691,30 @@ void msgbox_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
* @param obj pointer to a slider
|
||||
* @param event type of event that occured
|
||||
*/
|
||||
void slider_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
void slider_event_handler(lv_event_t* e)
|
||||
{
|
||||
lv_event_code_t event = lv_event_get_code(e);
|
||||
lv_obj_t* obj = (lv_obj_t*)lv_event_get_target(e);
|
||||
|
||||
log_event("slider", event);
|
||||
|
||||
uint8_t hasp_event_id;
|
||||
if(!translate_event(obj, event, hasp_event_id) || event == LV_EVENT_VALUE_CHANGED) return;
|
||||
if(!translate_event(e, hasp_event_id) || event == LV_EVENT_VALUE_CHANGED) return;
|
||||
|
||||
/* Get the new value */
|
||||
int16_t val;
|
||||
int16_t min;
|
||||
int16_t max;
|
||||
|
||||
if(obj->user_data.objid == LV_HASP_SLIDER) {
|
||||
lv_obj_user_data_t* user_data = (lv_obj_user_data_t*)obj->user_data;
|
||||
if(user_data->objid == LV_HASP_SLIDER) {
|
||||
val = lv_slider_get_value(obj);
|
||||
min = lv_slider_get_min_value(obj);
|
||||
max = lv_slider_get_max_value(obj);
|
||||
|
||||
} else if(obj->user_data.objid == LV_HASP_ARC) {
|
||||
} else if(user_data->objid == LV_HASP_ARC) {
|
||||
val = lv_arc_get_value(obj);
|
||||
min = lv_arc_get_min_value(obj);
|
||||
max = lv_arc_get_max_value(obj);
|
||||
|
||||
} else {
|
||||
return; // not a slider
|
||||
}
|
||||
@ -663,8 +724,8 @@ void slider_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
last_value_sent = val;
|
||||
event_object_val_event(obj, hasp_event_id, val);
|
||||
|
||||
if(obj->user_data.groupid && (hasp_event_id == HASP_EVENT_CHANGED || hasp_event_id == HASP_EVENT_UP) && min != max)
|
||||
event_update_group(obj->user_data.groupid, obj, !!val, val, min, max);
|
||||
if(user_data->groupid && (hasp_event_id == HASP_EVENT_CHANGED || hasp_event_id == HASP_EVENT_UP) && min != max)
|
||||
event_update_group(user_data->groupid, obj, !!val, val, min, max);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -672,12 +733,15 @@ void slider_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
* @param obj pointer to a color picker
|
||||
* @param event type of event that occured
|
||||
*/
|
||||
void cpicker_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
void cpicker_event_handler(lv_event_t* e)
|
||||
{
|
||||
lv_event_code_t event = lv_event_get_code(e);
|
||||
lv_obj_t* obj = (lv_obj_t*)lv_event_get_target(e);
|
||||
|
||||
log_event("cpicker", event);
|
||||
|
||||
uint8_t hasp_event_id;
|
||||
if(!translate_event(obj, event, hasp_event_id) || event == LV_EVENT_VALUE_CHANGED) return;
|
||||
if(!translate_event(e, hasp_event_id) || event == LV_EVENT_VALUE_CHANGED) return;
|
||||
|
||||
/* Get the new value */
|
||||
lv_color_t color = lv_cpicker_get_color(obj);
|
||||
@ -696,23 +760,26 @@ void cpicker_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
eventname, c32.ch.red, c32.ch.green, c32.ch.blue, c32.ch.red, c32.ch.green, c32.ch.blue);
|
||||
event_send_object_data(obj, data);
|
||||
|
||||
// event_update_group(obj->user_data.groupid, obj, val, min, max);
|
||||
// event_update_group(user_data->groupid, obj, val, min, max);
|
||||
}
|
||||
|
||||
void calendar_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
void calendar_event_handler(lv_event_t* e)
|
||||
{
|
||||
lv_event_code_t event = lv_event_get_code(e);
|
||||
lv_obj_t* obj = (lv_obj_t*)lv_event_get_target(e);
|
||||
|
||||
log_event("calendar", event);
|
||||
|
||||
uint8_t hasp_event_id;
|
||||
if(event != LV_EVENT_PRESSED && event != LV_EVENT_RELEASED && event != LV_EVENT_VALUE_CHANGED) return;
|
||||
if(!translate_event(obj, event, hasp_event_id)) return; // Use LV_EVENT_VALUE_CHANGED
|
||||
if(!translate_event(e, hasp_event_id)) return; // Use LV_EVENT_VALUE_CHANGED
|
||||
|
||||
/* Get the new value */
|
||||
lv_calendar_date_t* date;
|
||||
if(hasp_event_id == HASP_EVENT_CHANGED)
|
||||
date = lv_calendar_get_pressed_date(obj); // pressed date
|
||||
lv_calendar_get_pressed_date(obj, date); // pressed date
|
||||
else
|
||||
date = lv_calendar_get_showed_date(obj); // current month
|
||||
date = (lv_calendar_date_t*)lv_calendar_get_showed_date(obj); // current month
|
||||
if(!date) return;
|
||||
|
||||
lv_style_int_t val = date->day + date->month * 31;
|
||||
@ -728,5 +795,5 @@ void calendar_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
eventname, date->day, date->year, date->month, date->day);
|
||||
event_send_object_data(obj, data);
|
||||
|
||||
// event_update_group(obj->user_data.groupid, obj, val, min, max);
|
||||
// event_update_group(user_data->groupid, obj, val, min, max);
|
||||
}
|
@ -11,20 +11,22 @@
|
||||
#define HASP_NUM_PAGE_BACK (HASP_NUM_PAGES + 2)
|
||||
#define HASP_NUM_PAGE_NEXT (HASP_NUM_PAGES + 3)
|
||||
|
||||
#define lv_task_t lv_timer_t
|
||||
|
||||
// Timer event Handlers
|
||||
void event_timer_calendar(lv_task_t* task);
|
||||
void event_timer_clock(lv_task_t* task);
|
||||
|
||||
// Object event Handlers
|
||||
void delete_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||
void wakeup_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||
void generic_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||
void toggle_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||
void slider_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||
void selector_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||
void btnmatrix_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||
void msgbox_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||
void cpicker_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||
void calendar_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||
void delete_event_handler(lv_event_t* e);
|
||||
void wakeup_event_handler(lv_event_t* e);
|
||||
void generic_event_handler(lv_event_t* e);
|
||||
void toggle_event_handler(lv_event_t* e);
|
||||
void slider_event_handler(lv_event_t* e);
|
||||
void selector_event_handler(lv_event_t* e);
|
||||
void btnmatrix_event_handler(lv_event_t* e);
|
||||
void msgbox_event_handler(lv_event_t* e);
|
||||
void cpicker_event_handler(lv_event_t* e);
|
||||
void calendar_event_handler(lv_event_t* e);
|
||||
|
||||
#endif // HASP_EVENT_H
|
@ -22,16 +22,34 @@ const char* msgbox_default_map[] = {"OK", ""}; // memory pointer to hasp default
|
||||
|
||||
// ##################### Object Finders ########################################################
|
||||
|
||||
static inline uint8_t hasp_get_id(const lv_obj_t* obj)
|
||||
{
|
||||
if(!obj || !obj->user_data) return 0;
|
||||
return ((lv_obj_user_data_t*)obj->user_data)->id;
|
||||
}
|
||||
|
||||
static inline uint8_t hasp_get_objid(const lv_obj_t* obj)
|
||||
{
|
||||
if(!obj || !obj->user_data) return 0;
|
||||
return ((lv_obj_user_data_t*)obj->user_data)->objid;
|
||||
}
|
||||
|
||||
static inline uint8_t hasp_get_groupid(const lv_obj_t* obj)
|
||||
{
|
||||
if(!obj || !obj->user_data) return 0;
|
||||
return ((lv_obj_user_data_t*)obj->user_data)->groupid;
|
||||
}
|
||||
|
||||
// Return a child object from a parent with a specific objid
|
||||
lv_obj_t* hasp_find_obj_from_parent_id(lv_obj_t* parent, uint8_t objid)
|
||||
{
|
||||
if(objid == 0 || parent == nullptr) return parent;
|
||||
|
||||
lv_obj_t* child;
|
||||
child = lv_obj_get_child(parent, NULL);
|
||||
while(child) {
|
||||
for(uint32_t i = 0; i < lv_obj_get_child_cnt(parent); i++) {
|
||||
lv_obj_t* child = lv_obj_get_child(parent, i);
|
||||
|
||||
/* child found, return it */
|
||||
if(objid == child->user_data.id) return child;
|
||||
if(objid == hasp_get_id(child)) return child;
|
||||
|
||||
/* check grandchildren */
|
||||
lv_obj_t* grandchild = hasp_find_obj_from_parent_id(child, objid);
|
||||
@ -39,21 +57,19 @@ lv_obj_t* hasp_find_obj_from_parent_id(lv_obj_t* parent, uint8_t objid)
|
||||
|
||||
/* check tabs */
|
||||
if(obj_check_type(child, LV_HASP_TABVIEW)) {
|
||||
uint16_t tabcount = lv_tabview_get_tab_count(child);
|
||||
for(uint16_t i = 0; i < tabcount; i++) {
|
||||
lv_obj_t* tab = lv_tabview_get_tab(child, i);
|
||||
LOG_VERBOSE(TAG_HASP, "Found tab %i", i);
|
||||
if(tab->user_data.objid && objid == tab->user_data.objid) return tab; /* tab found, return it */
|
||||
// uint16_t tabcount = lv_tabview_get_tab_count(child);
|
||||
// for(uint16_t i = 0; i < tabcount; i++) {
|
||||
// lv_obj_t* tab = lv_tabview_get_tab(child, i);
|
||||
// LOG_VERBOSE(TAG_HASP, "Found tab %i", i);
|
||||
// if(tab->user_data && objid == hasp_get_objid(tab)) return tab; /* tab found, return it */
|
||||
|
||||
/* check grandchildren */
|
||||
grandchild = hasp_find_obj_from_parent_id(tab, objid);
|
||||
if(grandchild) return grandchild; /* grandchild found, return it */
|
||||
}
|
||||
// /* check grandchildren */
|
||||
// grandchild = hasp_find_obj_from_parent_id(tab, objid);
|
||||
// if(grandchild) return grandchild; /* grandchild found, return it */
|
||||
// }
|
||||
}
|
||||
|
||||
/* try next sibling */
|
||||
child = lv_obj_get_child(parent, child);
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -67,8 +83,8 @@ lv_obj_t* hasp_find_obj_from_page_id(uint8_t pageid, uint8_t objid)
|
||||
bool hasp_find_id_from_obj(const lv_obj_t* obj, uint8_t* pageid, uint8_t* objid)
|
||||
{
|
||||
if(!obj || !haspPages.get_id(obj, pageid)) return false;
|
||||
if(obj->user_data.id == 0 && obj != haspPages.get_obj(*pageid)) return false;
|
||||
*objid = obj->user_data.id;
|
||||
if(hasp_get_id(obj) == 0 && obj != haspPages.get_obj(*pageid)) return false;
|
||||
*objid = hasp_get_id(obj);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -78,32 +94,28 @@ void hasp_object_tree(const lv_obj_t* parent, uint8_t pageid, uint16_t level)
|
||||
|
||||
/* Output parent info */
|
||||
char indent[31];
|
||||
memset(indent, 32, 31);
|
||||
memset(indent, 0x20, 31);
|
||||
if(level < 15) indent[level * 2] = 0;
|
||||
indent[30] = 0;
|
||||
|
||||
LOG_VERBOSE(TAG_HASP, F("%s- " HASP_OBJECT_NOTATION ": %s"), indent, pageid, parent->user_data.id,
|
||||
LOG_VERBOSE(TAG_HASP, F("%s- " HASP_OBJECT_NOTATION ": %s"), indent, pageid, hasp_get_id(parent),
|
||||
obj_get_type_name(parent));
|
||||
|
||||
lv_obj_t* child;
|
||||
child = lv_obj_get_child(parent, NULL);
|
||||
while(child) {
|
||||
/* child found, process it */
|
||||
uint32_t i;
|
||||
for(i = 0; i < lv_obj_get_child_cnt(parent); i++) {
|
||||
lv_obj_t* child = lv_obj_get_child(parent, i);
|
||||
hasp_object_tree(child, pageid, level + 1);
|
||||
|
||||
/* try next sibling */
|
||||
child = lv_obj_get_child(parent, child);
|
||||
}
|
||||
|
||||
/* check tabs */
|
||||
if(obj_check_type(parent, LV_HASP_TABVIEW)) {
|
||||
#if 1
|
||||
uint16_t tabcount = lv_tabview_get_tab_count(parent);
|
||||
for(uint16_t i = 0; i < tabcount; i++) {
|
||||
lv_obj_t* tab = lv_tabview_get_tab(parent, i);
|
||||
LOG_VERBOSE(TAG_HASP, "Found tab %i", i);
|
||||
if(tab->user_data.objid) hasp_object_tree(tab, pageid, level + 1);
|
||||
}
|
||||
// uint16_t tabcount = lv_tabview_get_tab_count(parent);
|
||||
// for(uint16_t i = 0; i < tabcount; i++) {
|
||||
// lv_obj_t* tab = lv_tabview_get_tab(parent, i);
|
||||
// LOG_VERBOSE(TAG_HASP, "Found tab %i", i);
|
||||
// if(tab->user_data.objid) hasp_object_tree(tab, pageid, level + 1);
|
||||
// }
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -126,23 +138,22 @@ void object_set_group_values(lv_obj_t* parent, hasp_update_value_t& value)
|
||||
if(parent == nullptr) return;
|
||||
|
||||
// Update object if it's in the same group
|
||||
if(value.group == parent->user_data.groupid && value.obj != parent) {
|
||||
attribute_set_normalized_value(parent, value);
|
||||
if(value.group == hasp_get_groupid(parent) && value.obj != parent) {
|
||||
// attribute_set_normalized_value(parent, value);
|
||||
}
|
||||
|
||||
/* check tabs */
|
||||
if(obj_get_type(parent) == LV_HASP_TABVIEW) {
|
||||
uint16_t tabcount = lv_tabview_get_tab_count(parent);
|
||||
for(uint16_t i = 0; i < tabcount; i++) {
|
||||
lv_obj_t* tab = lv_tabview_get_tab(parent, i);
|
||||
object_set_group_values(tab, value);
|
||||
}
|
||||
// uint16_t tabcount = lv_tabview_get_tab_count(parent);
|
||||
// for(uint16_t i = 0; i < tabcount; i++) {
|
||||
// lv_obj_t* tab = lv_tabview_get_tab(parent, i);
|
||||
// object_set_group_values(tab, value);
|
||||
// }
|
||||
} else {
|
||||
lv_obj_t* child;
|
||||
child = lv_obj_get_child(parent, NULL);
|
||||
while(child) {
|
||||
uint32_t i;
|
||||
for(i = 0; i < lv_obj_get_child_cnt(parent); i++) {
|
||||
lv_obj_t* child = lv_obj_get_child(parent, i);
|
||||
object_set_group_values(child, value);
|
||||
child = lv_obj_get_child(parent, child);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -205,7 +216,7 @@ static inline int hasp_parse_json_attributes(lv_obj_t* obj, const JsonObject& do
|
||||
return i;
|
||||
}
|
||||
|
||||
static void object_add_task(lv_obj_t* obj, uint8_t pageid, uint8_t objid, lv_task_cb_t task_xcb, uint16_t interval)
|
||||
static void object_add_task(lv_obj_t* obj, uint8_t pageid, uint8_t objid, lv_timer_cb_t task_xcb, uint16_t interval)
|
||||
{
|
||||
hasp_task_user_data_t* user_data = (hasp_task_user_data_t*)lv_mem_alloc(sizeof(hasp_task_user_data_t));
|
||||
if(!user_data) return;
|
||||
@ -213,10 +224,29 @@ static void object_add_task(lv_obj_t* obj, uint8_t pageid, uint8_t objid, lv_tas
|
||||
user_data->pageid = pageid;
|
||||
user_data->objid = objid;
|
||||
user_data->interval = interval;
|
||||
lv_task_t* task = lv_task_create(task_xcb, 25, LV_TASK_PRIO_LOWEST, (void*)user_data);
|
||||
lv_timer_t* task = lv_timer_create(task_xcb, 25, (void*)user_data);
|
||||
(void)task; // unused
|
||||
}
|
||||
|
||||
bool object_set_user_data(lv_obj_t* obj, uint8_t id, uint8_t objid)
|
||||
{
|
||||
if(!obj) return false;
|
||||
|
||||
if(!obj->user_data) obj->user_data = (lv_obj_user_data_t*)lv_mem_alloc(sizeof(lv_obj_user_data_t));
|
||||
if(!obj->user_data) return false;
|
||||
|
||||
/* id tag the object */
|
||||
lv_obj_user_data_t* user_data = (lv_obj_user_data_t*)obj->user_data;
|
||||
user_data->id = id;
|
||||
user_data->objid = objid;
|
||||
user_data->transitionid = 0;
|
||||
user_data->actionid = 0;
|
||||
user_data->groupid = 0;
|
||||
user_data->swipeid = 0;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new object according to the json config
|
||||
* @param config Json representation for this object
|
||||
@ -279,63 +309,70 @@ void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id)
|
||||
config.remove(FPSTR(FP_OBJID));
|
||||
}
|
||||
|
||||
switch(sdbm) {
|
||||
/* ----- Basic Objects ------ */
|
||||
case LV_HASP_BTNMATRIX:
|
||||
case HASP_OBJ_BTNMATRIX:
|
||||
obj = lv_btnmatrix_create(parent_obj, NULL);
|
||||
if(obj) {
|
||||
lv_btnmatrix_set_recolor(obj, true);
|
||||
lv_obj_set_event_cb(obj, btnmatrix_event_handler);
|
||||
uint8_t objid = 0;
|
||||
|
||||
lv_btnmatrix_ext_t* ext = (lv_btnmatrix_ext_t*)lv_obj_get_ext_attr(obj);
|
||||
btnmatrix_default_map = ext->map_p; // store the static pointer to the default lvgl btnmap
|
||||
obj->user_data.objid = LV_HASP_BTNMATRIX;
|
||||
}
|
||||
break;
|
||||
switch(sdbm) {
|
||||
/* ----- Basic Objects ------ */
|
||||
// case LV_HASP_BTNMATRIX:
|
||||
// case HASP_OBJ_BTNMATRIX:
|
||||
// objid = LV_HASP_BTNMATRIX;
|
||||
// obj = lv_btnmatrix_create(parent_obj);
|
||||
// if(obj) {
|
||||
// lv_btnmatrix_set_recolor(obj, true);
|
||||
// lv_obj_set_event_cb(obj, btnmatrix_event_handler);
|
||||
|
||||
// lv_btnmatrix_ext_t* ext = (lv_btnmatrix_ext_t*)lv_obj_get_ext_attr(obj);
|
||||
// btnmatrix_default_map = ext->map_p; // store the static pointer to the default lvgl btnmap
|
||||
// // obj->user_data.objid = LV_HASP_BTNMATRIX;
|
||||
// }
|
||||
// break;
|
||||
|
||||
case LV_HASP_TABLE:
|
||||
case HASP_OBJ_TABLE:
|
||||
obj = lv_table_create(parent_obj, NULL);
|
||||
objid = LV_HASP_TABLE;
|
||||
obj = lv_table_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, selector_event_handler);
|
||||
obj->user_data.objid = LV_HASP_TABLE;
|
||||
// obj->user_data.objid = LV_HASP_TABLE;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_BUTTON:
|
||||
case HASP_OBJ_BTN:
|
||||
obj = lv_btn_create(parent_obj, NULL);
|
||||
objid = LV_HASP_BUTTON;
|
||||
obj = lv_btn_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_obj_t* lbl = lv_label_create(obj, NULL);
|
||||
lv_obj_t* lbl = lv_label_create(obj);
|
||||
if(lbl) {
|
||||
lv_label_set_text(lbl, "");
|
||||
lv_label_set_recolor(lbl, true);
|
||||
lbl->user_data.objid = LV_HASP_LABEL;
|
||||
lv_obj_align(lbl, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||
object_set_user_data(lbl, 0, LV_HASP_LABEL);
|
||||
lv_obj_align(lbl, LV_ALIGN_CENTER, 0, 0);
|
||||
}
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
obj->user_data.objid = LV_HASP_BUTTON;
|
||||
// obj->user_data.objid = LV_HASP_BUTTON;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_CHECKBOX:
|
||||
case HASP_OBJ_CHECKBOX:
|
||||
obj = lv_checkbox_create(parent_obj, NULL);
|
||||
objid = LV_HASP_CHECKBOX;
|
||||
obj = lv_checkbox_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, toggle_event_handler);
|
||||
obj->user_data.objid = LV_HASP_CHECKBOX;
|
||||
// obj->user_data.objid = LV_HASP_CHECKBOX;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_LABEL:
|
||||
case HASP_OBJ_LABEL:
|
||||
obj = lv_label_create(parent_obj, NULL);
|
||||
objid = LV_HASP_LABEL;
|
||||
obj = lv_label_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_label_set_long_mode(obj, LV_LABEL_LONG_CROP);
|
||||
lv_label_set_long_mode(obj, LV_LABEL_LONG_CLIP);
|
||||
lv_label_set_recolor(obj, true);
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
obj->user_data.objid = LV_HASP_LABEL;
|
||||
// obj->user_data.objid = LV_HASP_LABEL;
|
||||
|
||||
// object_add_task(obj, pageid, id, event_timer_clock, 1000);
|
||||
}
|
||||
@ -343,52 +380,58 @@ void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id)
|
||||
|
||||
case LV_HASP_IMAGE:
|
||||
case HASP_OBJ_IMG:
|
||||
obj = lv_img_create(parent_obj, NULL);
|
||||
objid = LV_HASP_IMAGE;
|
||||
obj = lv_img_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
obj->user_data.objid = LV_HASP_IMAGE;
|
||||
// obj->user_data.objid = LV_HASP_IMAGE;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_ARC:
|
||||
case HASP_OBJ_ARC:
|
||||
obj = lv_arc_create(parent_obj, NULL);
|
||||
objid = LV_HASP_ARC;
|
||||
obj = lv_arc_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
obj->user_data.objid = LV_HASP_ARC;
|
||||
// obj->user_data.objid = LV_HASP_ARC;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_CONTAINER:
|
||||
case HASP_OBJ_CONT:
|
||||
obj = lv_cont_create(parent_obj, NULL);
|
||||
objid = LV_HASP_CONTAINER;
|
||||
obj = lv_cont_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
obj->user_data.objid = LV_HASP_CONTAINER;
|
||||
// obj->user_data.objid = LV_HASP_CONTAINER;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_OBJECT:
|
||||
case HASP_OBJ_OBJ:
|
||||
obj = lv_obj_create(parent_obj, NULL);
|
||||
objid = LV_HASP_OBJECT;
|
||||
obj = lv_obj_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
obj->user_data.objid = LV_HASP_OBJECT;
|
||||
// obj->user_data.objid = LV_HASP_OBJECT;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_PAGE:
|
||||
case HASP_OBJ_PAGE:
|
||||
obj = lv_page_create(parent_obj, NULL);
|
||||
if(obj) obj->user_data.objid = LV_HASP_PAGE;
|
||||
objid = LV_HASP_PAGE;
|
||||
obj = lv_page_create(parent_obj);
|
||||
// if(obj) obj->user_data.objid = LV_HASP_PAGE;
|
||||
// No event handler for pages
|
||||
break;
|
||||
|
||||
#if LV_USE_WIN && LVGL_VERSION_MAJOR == 7
|
||||
case LV_HASP_WINDOW:
|
||||
case HASP_OBJ_WIN:
|
||||
obj = lv_win_create(parent_obj, NULL);
|
||||
if(obj) obj->user_data.objid = LV_HASP_WINDOW;
|
||||
objid = LV_HASP_WINDOW;
|
||||
obj = lv_win_create(parent_obj);
|
||||
// if(obj) obj->user_data.objid = LV_HASP_WINDOW;
|
||||
// No event handler for pages
|
||||
break;
|
||||
|
||||
@ -397,65 +440,72 @@ void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id)
|
||||
#if LVGL_VERSION_MAJOR == 8
|
||||
case LV_HASP_LED:
|
||||
case HASP_OBJ_LED:
|
||||
obj = lv_led_create(parent_obj);
|
||||
objid = LV_HASP_LED;
|
||||
obj = lv_led_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
obj->user_data.objid = LV_HASP_LED;
|
||||
// obj->user_data.objid = LV_HASP_LED;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_TILEVIEW:
|
||||
case HASP_OBJ_TILEVIEW:
|
||||
obj = lv_tileview_create(parent_obj);
|
||||
if(obj) obj->user_data.objid = LV_HASP_TILEVIEW;
|
||||
objid = LV_HASP_TILEVIEW;
|
||||
obj = lv_tileview_create(parent_obj);
|
||||
// if(obj) obj->user_data.objid = LV_HASP_TILEVIEW;
|
||||
// No event handler for tileviews
|
||||
break;
|
||||
|
||||
case LV_HASP_TABVIEW:
|
||||
case HASP_OBJ_TABVIEW:
|
||||
obj = lv_tabview_create(parent_obj, LV_DIR_TOP, 100);
|
||||
objid = LV_HASP_TABVIEW;
|
||||
obj = lv_tabview_create(parent_obj, LV_DIR_TOP, 100);
|
||||
// No event handler for tabs
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, selector_event_handler);
|
||||
obj->user_data.objid = LV_HASP_TABVIEW;
|
||||
// obj->user_data.objid = LV_HASP_TABVIEW;
|
||||
}
|
||||
break;
|
||||
|
||||
#else
|
||||
case LV_HASP_LED:
|
||||
case HASP_OBJ_LED:
|
||||
obj = lv_led_create(parent_obj, NULL);
|
||||
objid = LV_HASP_LED;
|
||||
obj = lv_led_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
obj->user_data.objid = LV_HASP_LED;
|
||||
// obj->user_data.objid = LV_HASP_LED;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_TILEVIEW:
|
||||
case HASP_OBJ_TILEVIEW:
|
||||
obj = lv_tileview_create(parent_obj, NULL);
|
||||
if(obj) obj->user_data.objid = LV_HASP_TILEVIEW;
|
||||
objid = LV_HASP_TILEVIEW;
|
||||
obj = lv_tileview_create(parent_obj);
|
||||
// if(obj) obj->user_data.objid = LV_HASP_TILEVIEW;
|
||||
|
||||
// No event handler for tileviews
|
||||
break;
|
||||
|
||||
case LV_HASP_TABVIEW:
|
||||
case HASP_OBJ_TABVIEW:
|
||||
obj = lv_tabview_create(parent_obj, NULL);
|
||||
objid = LV_HASP_TABVIEW;
|
||||
obj = lv_tabview_create(parent_obj);
|
||||
// No event handler for tabs
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, selector_event_handler);
|
||||
obj->user_data.objid = LV_HASP_TABVIEW;
|
||||
// obj->user_data.objid = LV_HASP_TABVIEW;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_TAB:
|
||||
case HASP_OBJ_TAB:
|
||||
objid = LV_HASP_TAB;
|
||||
if(parent_obj && parent_obj->user_data.objid == LV_HASP_TABVIEW) {
|
||||
obj = lv_tabview_add_tab(parent_obj, "Tab");
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
obj->user_data.objid = LV_HASP_TAB;
|
||||
// obj->user_data.objid = LV_HASP_TAB;
|
||||
}
|
||||
} else {
|
||||
LOG_WARNING(TAG_HASP, F("Parent of a tab must be a tabview object"));
|
||||
@ -467,19 +517,21 @@ void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id)
|
||||
/* ----- Color Objects ------ */
|
||||
case LV_HASP_CPICKER:
|
||||
case HASP_OBJ_CPICKER:
|
||||
obj = lv_cpicker_create(parent_obj, NULL);
|
||||
objid = LV_HASP_CPICKER;
|
||||
obj = lv_colorwheel_create(parent_obj, true);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, cpicker_event_handler);
|
||||
obj->user_data.objid = LV_HASP_CPICKER;
|
||||
// obj->user_data.objid = LV_HASP_CPICKER;
|
||||
}
|
||||
break;
|
||||
|
||||
#if LV_USE_SPINNER != 0
|
||||
case LV_HASP_SPINNER:
|
||||
case HASP_OBJ_SPINNER:
|
||||
obj = lv_spinner_create(parent_obj, NULL);
|
||||
objid = LV_HASP_SPINNER;
|
||||
obj = lv_spinner_create(parent_obj, 2000, 90);
|
||||
if(obj) {
|
||||
obj->user_data.objid = LV_HASP_SPINNER;
|
||||
// obj->user_data.objid = LV_HASP_SPINNER;
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
}
|
||||
break;
|
||||
@ -488,150 +540,163 @@ void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id)
|
||||
/* ----- Range Objects ------ */
|
||||
case LV_HASP_SLIDER:
|
||||
case HASP_OBJ_SLIDER:
|
||||
obj = lv_slider_create(parent_obj, NULL);
|
||||
objid = LV_HASP_SLIDER;
|
||||
obj = lv_slider_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_slider_set_range(obj, 0, 100);
|
||||
lv_obj_set_event_cb(obj, slider_event_handler);
|
||||
obj->user_data.objid = LV_HASP_SLIDER;
|
||||
// obj->user_data.objid = LV_HASP_SLIDER;
|
||||
}
|
||||
// bool knobin = config[F("knobin")].as<bool>() | true;
|
||||
// lv_slider_set_knob_in(obj, knobin);
|
||||
break;
|
||||
|
||||
case LV_HASP_GAUGE:
|
||||
case HASP_OBJ_GAUGE:
|
||||
obj = lv_gauge_create(parent_obj, NULL);
|
||||
if(obj) {
|
||||
lv_gauge_set_range(obj, 0, 100);
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
obj->user_data.objid = LV_HASP_GAUGE;
|
||||
}
|
||||
break;
|
||||
// case LV_HASP_GAUGE:
|
||||
// case HASP_OBJ_GAUGE:
|
||||
// objid = LV_HASP_GAUGE;
|
||||
// obj = lv_gauge_create(parent_obj);
|
||||
// if(obj) {
|
||||
// lv_gauge_set_range(obj, 0, 100);
|
||||
// lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
// // obj->user_data.objid = LV_HASP_GAUGE;
|
||||
// }
|
||||
// break;
|
||||
|
||||
case LV_HASP_LINE:
|
||||
case HASP_OBJ_LINE:
|
||||
obj = lv_line_create(parent_obj, NULL);
|
||||
objid = LV_HASP_LINE;
|
||||
obj = lv_line_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, delete_event_handler);
|
||||
obj->user_data.objid = LV_HASP_LINE;
|
||||
// obj->user_data.objid = LV_HASP_LINE;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_BAR:
|
||||
case HASP_OBJ_BAR:
|
||||
obj = lv_bar_create(parent_obj, NULL);
|
||||
objid = LV_HASP_BAR;
|
||||
obj = lv_bar_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_bar_set_range(obj, 0, 100);
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
obj->user_data.objid = LV_HASP_BAR;
|
||||
// obj->user_data.objid = LV_HASP_BAR;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_LINEMETER:
|
||||
case HASP_OBJ_LMETER: // obsolete
|
||||
case HASP_OBJ_LINEMETER:
|
||||
obj = lv_linemeter_create(parent_obj, NULL);
|
||||
if(obj) {
|
||||
lv_linemeter_set_range(obj, 0, 100);
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
obj->user_data.objid = LV_HASP_LINEMETER;
|
||||
}
|
||||
break;
|
||||
// case LV_HASP_LINEMETER:
|
||||
// case HASP_OBJ_LMETER: // obsolete
|
||||
// case HASP_OBJ_LINEMETER:
|
||||
// objid = LV_HASP_LINEMETER;
|
||||
// obj = lv_linemeter_create(parent_obj);
|
||||
// if(obj) {
|
||||
// lv_linemeter_set_range(obj, 0, 100);
|
||||
// lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
// // obj->user_data.objid = LV_HASP_LINEMETER;
|
||||
// }
|
||||
// break;
|
||||
|
||||
case LV_HASP_SPINBOX:
|
||||
case HASP_OBJ_SPINBOX:
|
||||
obj = lv_spinbox_create(parent_obj, NULL);
|
||||
objid = LV_HASP_SPINBOX;
|
||||
obj = lv_spinbox_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_spinbox_set_range(obj, 0, 100);
|
||||
lv_obj_set_event_cb(obj, slider_event_handler);
|
||||
obj->user_data.objid = LV_HASP_SPINBOX;
|
||||
// obj->user_data.objid = LV_HASP_SPINBOX;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_LIST:
|
||||
case HASP_OBJ_LIST:
|
||||
obj = lv_list_create(parent_obj, NULL);
|
||||
objid = LV_HASP_LIST;
|
||||
obj = lv_list_create(parent_obj);
|
||||
if(obj) {
|
||||
// Callbacks are set on the individual buttons
|
||||
obj->user_data.objid = LV_HASP_LIST;
|
||||
// obj->user_data.objid = LV_HASP_LIST;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_CHART:
|
||||
case HASP_OBJ_CHART:
|
||||
obj = lv_chart_create(parent_obj, NULL);
|
||||
if(obj) {
|
||||
lv_chart_set_range(obj, 0, 100);
|
||||
lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
// case LV_HASP_CHART:
|
||||
// case HASP_OBJ_CHART:
|
||||
// objid = LV_HASP_CHART;
|
||||
// obj = lv_chart_create(parent_obj);
|
||||
// if(obj) {
|
||||
// lv_chart_set_range(obj, 0, 100);
|
||||
// lv_obj_set_event_cb(obj, generic_event_handler);
|
||||
|
||||
lv_chart_add_series(obj, LV_COLOR_RED);
|
||||
lv_chart_add_series(obj, LV_COLOR_GREEN);
|
||||
lv_chart_add_series(obj, LV_COLOR_BLUE);
|
||||
// lv_chart_add_series(obj, LV_COLOR_RED);
|
||||
// lv_chart_add_series(obj, LV_COLOR_GREEN);
|
||||
// lv_chart_add_series(obj, LV_COLOR_BLUE);
|
||||
|
||||
lv_chart_series_t* ser = my_chart_get_series(obj, 2);
|
||||
lv_chart_set_next(obj, ser, 10);
|
||||
lv_chart_set_next(obj, ser, 20);
|
||||
lv_chart_set_next(obj, ser, 30);
|
||||
lv_chart_set_next(obj, ser, 40);
|
||||
// lv_chart_series_t* ser = my_chart_get_series(obj, 2);
|
||||
// lv_chart_set_next(obj, ser, 10);
|
||||
// lv_chart_set_next(obj, ser, 20);
|
||||
// lv_chart_set_next(obj, ser, 30);
|
||||
// lv_chart_set_next(obj, ser, 40);
|
||||
|
||||
obj->user_data.objid = LV_HASP_CHART;
|
||||
}
|
||||
break;
|
||||
// // obj->user_data.objid = LV_HASP_CHART;
|
||||
// }
|
||||
// break;
|
||||
|
||||
/* ----- On/Off Objects ------ */
|
||||
case LV_HASP_SWITCH:
|
||||
case HASP_OBJ_SWITCH:
|
||||
obj = lv_switch_create(parent_obj, NULL);
|
||||
objid = LV_HASP_SWITCH;
|
||||
obj = lv_switch_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, toggle_event_handler);
|
||||
obj->user_data.objid = LV_HASP_SWITCH;
|
||||
// obj->user_data.objid = LV_HASP_SWITCH;
|
||||
}
|
||||
break;
|
||||
|
||||
/* ----- List Object ------- */
|
||||
/* ----- Dropdown Object ------- */
|
||||
case LV_HASP_DROPDOWN:
|
||||
case HASP_OBJ_DROPDOWN:
|
||||
obj = lv_dropdown_create(parent_obj, NULL);
|
||||
objid = LV_HASP_DROPDOWN;
|
||||
obj = lv_dropdown_create(parent_obj);
|
||||
if(obj) {
|
||||
lv_dropdown_set_draw_arrow(obj, true);
|
||||
// lv_dropdown_set_anim_time(obj, 200);
|
||||
lv_obj_set_top(obj, true);
|
||||
// lv_obj_align(obj, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
|
||||
// // lv_obj_align(obj, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
|
||||
lv_obj_set_event_cb(obj, selector_event_handler);
|
||||
obj->user_data.objid = LV_HASP_DROPDOWN;
|
||||
// obj->user_data.objid = LV_HASP_DROPDOWN;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_ROLLER:
|
||||
case HASP_OBJ_ROLLER:
|
||||
obj = lv_roller_create(parent_obj, NULL);
|
||||
// lv_obj_align(obj, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
|
||||
objid = LV_HASP_ROLLER;
|
||||
obj = lv_roller_create(parent_obj);
|
||||
// // lv_obj_align(obj, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
|
||||
if(obj) {
|
||||
lv_roller_set_auto_fit(obj, false);
|
||||
lv_obj_set_event_cb(obj, selector_event_handler);
|
||||
obj->user_data.objid = LV_HASP_ROLLER;
|
||||
// obj->user_data.objid = LV_HASP_ROLLER;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_MSGBOX:
|
||||
case HASP_OBJ_MSGBOX:
|
||||
obj = lv_msgbox_create(parent_obj, NULL);
|
||||
if(obj) {
|
||||
lv_obj_align(obj, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||
lv_obj_set_auto_realign(obj, true);
|
||||
lv_obj_set_event_cb(obj, msgbox_event_handler);
|
||||
if(msgbox_default_map) lv_msgbox_add_btns(obj, msgbox_default_map);
|
||||
obj->user_data.objid = LV_HASP_MSGBOX;
|
||||
}
|
||||
break;
|
||||
// case LV_HASP_MSGBOX:
|
||||
// case HASP_OBJ_MSGBOX:
|
||||
// objid = LV_HASP_MSGBOX;
|
||||
// obj = lv_msgbox_create(parent_obj);
|
||||
// if(obj) {
|
||||
// // lv_obj_align(obj, NULL, LV_ALIGN_CENTER, 0, 0);
|
||||
// lv_obj_set_auto_realign(obj, true);
|
||||
// lv_obj_set_event_cb(obj, msgbox_event_handler);
|
||||
// if(msgbox_default_map) lv_msgbox_add_btns(obj, msgbox_default_map);
|
||||
// // obj->user_data.objid = LV_HASP_MSGBOX;
|
||||
// }
|
||||
// break;
|
||||
|
||||
case LV_HASP_CALENDER:
|
||||
case HASP_OBJ_CALENDAR:
|
||||
obj = lv_calendar_create(parent_obj, NULL);
|
||||
// lv_obj_align(obj, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
|
||||
objid = LV_HASP_CALENDER;
|
||||
obj = lv_calendar_create(parent_obj);
|
||||
// // lv_obj_align(obj, NULL, LV_ALIGN_IN_TOP_MID, 0, 20);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, calendar_event_handler);
|
||||
obj->user_data.objid = LV_HASP_CALENDER;
|
||||
// obj->user_data.objid = LV_HASP_CALENDER;
|
||||
|
||||
object_add_task(obj, pageid, id, event_timer_calendar, 5000);
|
||||
}
|
||||
@ -650,16 +715,15 @@ void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id)
|
||||
|
||||
// Prevent losing press when the press is slid out of the objects.
|
||||
// (E.g. a Button can be released out of it if it was being pressed)
|
||||
lv_obj_add_protect(obj, LV_PROTECT_PRESS_LOST);
|
||||
lv_obj_set_gesture_parent(obj, false);
|
||||
// V8 lv_obj_add_protect(obj, LV_PROTECT_PRESS_LOST);
|
||||
// V8 lv_obj_set_gesture_parent(obj, false);
|
||||
|
||||
/* id tag the object */
|
||||
obj->user_data.id = id;
|
||||
if(!object_set_user_data(obj, id, objid)) return;
|
||||
|
||||
#ifdef HASP_DEBUG
|
||||
uint8_t temp; // needed for debug tests
|
||||
(void)temp;
|
||||
|
||||
#ifdef HASP_DEBUG
|
||||
/** testing start **/
|
||||
if(!hasp_find_id_from_obj(obj, &pageid, &temp)) {
|
||||
LOG_ERROR(TAG_HASP, F(D_OBJECT_LOST));
|
||||
|
@ -78,6 +78,7 @@ enum lv_hasp_obj_type_t {
|
||||
};
|
||||
|
||||
void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id);
|
||||
bool object_set_user_data(lv_obj_t* obj, uint8_t id, uint8_t objid);
|
||||
|
||||
lv_obj_t* hasp_find_obj_from_parent_id(lv_obj_t* parent, uint8_t objid);
|
||||
lv_obj_t* hasp_find_obj_from_page_id(uint8_t pageid, uint8_t objid);
|
||||
@ -99,10 +100,14 @@ void object_set_normalized_group_values(hasp_update_value_t& value);
|
||||
*/
|
||||
inline const char* obj_get_type_name(const lv_obj_t* obj)
|
||||
{
|
||||
#if LV_VERSION_CHECK(8, 0, 0)
|
||||
return "unknown";
|
||||
#else
|
||||
lv_obj_type_t list;
|
||||
lv_obj_get_type(obj, &list);
|
||||
const char* objtype = list.type[0];
|
||||
return objtype + 3; // skip lv_
|
||||
#endif
|
||||
}
|
||||
/**
|
||||
* Get the hasp object type of a given LVGL object
|
||||
@ -112,7 +117,8 @@ inline const char* obj_get_type_name(const lv_obj_t* obj)
|
||||
*/
|
||||
inline lv_hasp_obj_type_t obj_get_type(const lv_obj_t* obj)
|
||||
{
|
||||
return (lv_hasp_obj_type_t)obj->user_data.objid;
|
||||
lv_obj_user_data_t* user_data = (lv_obj_user_data_t*)obj->user_data;
|
||||
return (lv_hasp_obj_type_t)user_data->objid;
|
||||
}
|
||||
/**
|
||||
* Check if an lvgl objecttype name corresponds to a given HASP object ID
|
||||
@ -124,8 +130,9 @@ inline lv_hasp_obj_type_t obj_get_type(const lv_obj_t* obj)
|
||||
inline bool obj_check_type(const lv_obj_t* obj, lv_hasp_obj_type_t haspobjtype)
|
||||
{
|
||||
#if 1
|
||||
if(!obj) return false;
|
||||
return obj->user_data.objid == (uint8_t)haspobjtype;
|
||||
if(!obj || !obj->user_data) return false;
|
||||
lv_obj_user_data_t* user_data = (lv_obj_user_data_t*)obj->user_data;
|
||||
return user_data->objid == (uint8_t)haspobjtype;
|
||||
#else
|
||||
lv_obj_type_t list;
|
||||
lv_obj_get_type(obj, &list);
|
||||
|
@ -31,9 +31,8 @@ void Page::init(uint8_t start_page)
|
||||
|
||||
for(int i = 0; i < count(); i++) {
|
||||
lv_obj_t* prev_page_obj = _pages[i];
|
||||
|
||||
_pages[i] = lv_obj_create(NULL, NULL);
|
||||
_pages[i]->user_data.objid = LV_HASP_SCREEN;
|
||||
_pages[i] = lv_obj_create(NULL);
|
||||
object_set_user_data(_pages[i], 0, LV_HASP_SCREEN);
|
||||
lv_obj_set_event_cb(_pages[i], generic_event_handler);
|
||||
|
||||
/**< If the `indev` was pressing this object but swiped out while pressing do not search other object.*/
|
||||
|
@ -1,6 +1,8 @@
|
||||
/* MIT License - Copyright (c) 2019-2021 Francis Van Roie
|
||||
For full license information read the LICENSE file in the project folder */
|
||||
|
||||
#if 0
|
||||
|
||||
#include "hasp_attribute.h" /*To see all the hashes*/
|
||||
|
||||
static void set_style_attribute(lv_style_t * style, lv_state_t state, int16_t val)
|
||||
@ -226,4 +228,6 @@ static void set_style_attribute(lv_style_t * style, lv_state_t state, int16_t va
|
||||
lv_style_set_scale_end_color(style, state, color);
|
||||
default:;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
File diff suppressed because it is too large
Load Diff
@ -138,39 +138,10 @@ void debugStop()
|
||||
|
||||
/* ===== Special Event Processors ===== */
|
||||
|
||||
void debugLvglLogEvent(lv_log_level_t level, const char* file, uint32_t line, const char* funcname, const char* descr)
|
||||
void debugLvglLogEvent(const char* line)
|
||||
{
|
||||
#if LV_USE_LOG != 0
|
||||
/* used for duplicate detection */
|
||||
static const char* last_funcname;
|
||||
static uint32_t lastDbgLine;
|
||||
// static uint32_t lastDbgFreeMem;
|
||||
|
||||
/* Reduce the number of repeated debug message */
|
||||
if(line == lastDbgLine && funcname == last_funcname) return;
|
||||
|
||||
// lv_mem_monitor_t mem_mon;
|
||||
// lv_mem_monitor(&mem_mon);
|
||||
|
||||
/* Reduce the number of repeated debug message */
|
||||
// if(line != lastDbgLine || mem_mon.free_biggest_size != lastDbgFreeMem) {
|
||||
switch(level) {
|
||||
case LV_LOG_LEVEL_TRACE:
|
||||
LOG_VERBOSE(TAG_LVGL, descr);
|
||||
break;
|
||||
case LV_LOG_LEVEL_WARN:
|
||||
LOG_WARNING(TAG_LVGL, descr);
|
||||
break;
|
||||
case LV_LOG_LEVEL_ERROR:
|
||||
LOG_ERROR(TAG_LVGL, descr);
|
||||
break;
|
||||
default:
|
||||
LOG_TRACE(TAG_LVGL, descr);
|
||||
}
|
||||
last_funcname = funcname;
|
||||
lastDbgLine = line;
|
||||
// lastDbgFreeMem = mem_mon.free_biggest_size;
|
||||
//}
|
||||
LOG_VERBOSE(TAG_LVGL, line);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -134,7 +134,7 @@ extern "C" {
|
||||
#endif
|
||||
|
||||
// Functions used by ANDROID, WINDOWS and POSSIX
|
||||
void debugLvglLogEvent(lv_log_level_t level, const char* file, uint32_t line, const char* funcname, const char* descr);
|
||||
void debugLvglLogEvent(const char* line);
|
||||
IRAM_ATTR void debugLoop(void);
|
||||
void debugEverySecond(void);
|
||||
void debugStart(void);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user