Code cleanup

This commit is contained in:
fvanroie 2020-04-02 16:57:45 +02:00
parent 2fadd2da50
commit 2349c816ee

View File

@ -11,12 +11,7 @@
#define LVGL7 1 #define LVGL7 1
#if LVGL7 //#include "../lib/lvgl/src/lv_widgets/lv_roller.h"
#include "../lib/lvgl/src/lv_widgets/lv_roller.h"
#else
#include "lv_theme_hasp.h"
#include "lv_objx/lv_roller.h"
#endif
#if HASP_USE_QRCODE != 0 #if HASP_USE_QRCODE != 0
#include "lv_qrcode.h" #include "lv_qrcode.h"
@ -37,8 +32,8 @@
#include "hasp_wifi.h" #include "hasp_wifi.h"
#include "hasp_gui.h" #include "hasp_gui.h"
#include "hasp_tft.h" #include "hasp_tft.h"
#include "hasp_attr_get.h" //#include "hasp_attr_get.h"
#include "hasp_attr_set.h" #include "hasp_attribute.h"
#include "hasp.h" #include "hasp.h"
#include "hasp_conf.h" #include "hasp_conf.h"
@ -51,7 +46,6 @@
/********************* /*********************
* DEFINES * DEFINES
*********************/ *********************/
uint8_t haspStartDim = 100; uint8_t haspStartDim = 100;
uint8_t haspStartPage = 0; uint8_t haspStartPage = 0;
uint8_t haspThemeId = 0; uint8_t haspThemeId = 0;
@ -66,8 +60,6 @@ char haspZiFontPath[32];
/********************** /**********************
* STATIC PROTOTYPES * STATIC PROTOTYPES
**********************/ **********************/
static void btn_event_handler(lv_obj_t * obj, lv_event_t event);
static void toggle_event_handler(lv_obj_t * obj, lv_event_t event);
// void hasp_background(uint16_t pageid, uint16_t imageid); // void hasp_background(uint16_t pageid, uint16_t imageid);
#if LV_USE_ANIMATION #if LV_USE_ANIMATION
@ -194,62 +186,64 @@ bool FindIdFromObj(lv_obj_t * obj, uint8_t * pageid, lv_obj_user_data_t * objid)
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
static void hasp_send_event_attribute(lv_obj_t * obj, const char * event) void hasp_send_obj_attribute_str(lv_obj_t * obj, const char * attribute, const char * data)
{ {
uint8_t pageid; uint8_t pageid;
uint8_t objid; uint8_t objid;
if(FindIdFromObj(obj, &pageid, &objid)) { if(FindIdFromObj(obj, &pageid, &objid)) {
#if HASP_USE_MQTT > 0 dispatch_obj_attribute_str(pageid, objid, attribute, data);
mqtt_send_event_attribute(pageid, objid, event);
#endif
} }
} }
static void hasp_send_val_attribute(lv_obj_t * obj, int32_t val) void hasp_send_obj_attribute_int(lv_obj_t * obj, const char * attribute, int32_t val)
{ {
uint8_t pageid; char data[64];
uint8_t objid; itoa(val, data, 10);
hasp_send_obj_attribute_str(obj, attribute, data);
if(FindIdFromObj(obj, &pageid, &objid)) {
#if HASP_USE_MQTT > 0
mqtt_send_val_attribute(pageid, objid, val);
#endif
}
} }
static void hasp_send_txt_attribute(lv_obj_t * obj, String & txt) /** Senders for event handlers **/
static void hasp_send_obj_attribute_P(lv_obj_t * obj, const char * attr, const char * data)
{ {
uint8_t pageid; char * buffer;
uint8_t objid; buffer = (char *)malloc(strlen_P(attr) + 1);
strcpy_P(buffer, attr);
if(FindIdFromObj(obj, &pageid, &objid)) { hasp_send_obj_attribute_P(obj, buffer, data);
#if HASP_USE_MQTT > 0 free(buffer);
mqtt_send_txt_attribute(pageid, objid, txt.c_str());
#endif
}
} }
static void hasp_send_txt_attribute(lv_obj_t * obj, const char * txt) static inline void hasp_send_obj_attribute_val(lv_obj_t * obj, int32_t val)
{ {
uint8_t pageid; char data[64];
uint8_t objid; itoa(val, data, 10);
hasp_send_obj_attribute_P(obj, PSTR("val"), data);
if(FindIdFromObj(obj, &pageid, &objid)) {
#if HASP_USE_MQTT > 0
mqtt_send_txt_attribute(pageid, objid, txt);
#endif
}
} }
static inline void hasp_send_val_attribute(lv_obj_t * obj, int16_t val) static inline void hasp_send_obj_attribute_val(lv_obj_t * obj, int16_t val)
{ {
hasp_send_val_attribute(obj, (int32_t)val); hasp_send_obj_attribute_val(obj, (int32_t)val);
} }
static inline void hasp_send_color_attribute(lv_obj_t * obj, lv_color_t color) static inline void hasp_send_obj_attribute_event(lv_obj_t * obj, const char * event)
{ {
hasp_send_val_attribute(obj, (int32_t)get_cpicker_value(obj)); // Needs a color function hasp_send_obj_attribute_P(obj, PSTR("event"), event);
}
static inline void hasp_send_obj_attribute_txt(lv_obj_t * obj, const char * txt)
{
hasp_send_obj_attribute_P(obj, PSTR("txt"), txt);
}
static void hasp_send_obj_attribute_txt(lv_obj_t * obj, String & txt)
{
hasp_send_obj_attribute_P(obj, PSTR("txt"), txt.c_str());
}
static inline void hasp_send_obj_attribute_color(lv_obj_t * obj, lv_color_t color)
{
// hasp_send_obj_attribute_val(obj, (int32_t)get_cpicker_value(obj)); // Needs a color function
} }
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
@ -262,13 +256,13 @@ bool check_obj_type(const char * lvobjtype, lv_hasp_obj_type_t haspobjtype)
case LV_HASP_LABEL: case LV_HASP_LABEL:
return (strcmp_P(lvobjtype, PSTR("lv_label")) == 0); return (strcmp_P(lvobjtype, PSTR("lv_label")) == 0);
case LV_HASP_CHECKBOX: case LV_HASP_CHECKBOX:
return (strcmp_P(lvobjtype, PSTR("lv_cb")) == 0) || (strcmp_P(lvobjtype, PSTR("lv_checkbox")) == 0); return (strcmp_P(lvobjtype, PSTR("lv_checkbox")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_cb")) == 0);
case LV_HASP_DDLIST: case LV_HASP_DDLIST:
return (strcmp_P(lvobjtype, PSTR("lv_ddlist")) == 0) || (strcmp_P(lvobjtype, PSTR("lv_dropdown")) == 0); return (strcmp_P(lvobjtype, PSTR("lv_dropdown")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_ddlist")) == 0);
case LV_HASP_CPICKER: case LV_HASP_CPICKER:
return (strcmp_P(lvobjtype, PSTR("lv_cpicker")) == 0); return (strcmp_P(lvobjtype, PSTR("lv_cpicker")) == 0);
case LV_HASP_PRELOADER: case LV_HASP_PRELOADER:
return (strcmp_P(lvobjtype, PSTR("lv_preload")) == 0) || (strcmp_P(lvobjtype, PSTR("lv_spinner")) == 0); return (strcmp_P(lvobjtype, PSTR("lv_spinner")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_preload")) == 0);
case LV_HASP_SLIDER: case LV_HASP_SLIDER:
return (strcmp_P(lvobjtype, PSTR("lv_slider")) == 0); return (strcmp_P(lvobjtype, PSTR("lv_slider")) == 0);
case LV_HASP_GAUGE: case LV_HASP_GAUGE:
@ -276,38 +270,26 @@ bool check_obj_type(const char * lvobjtype, lv_hasp_obj_type_t haspobjtype)
case LV_HASP_BAR: case LV_HASP_BAR:
return (strcmp_P(lvobjtype, PSTR("lv_bar")) == 0); return (strcmp_P(lvobjtype, PSTR("lv_bar")) == 0);
case LV_HASP_LMETER: case LV_HASP_LMETER:
return (strcmp_P(lvobjtype, PSTR("lv_lmeter")) == 0) || (strcmp_P(lvobjtype, PSTR("lv_linemeter")) == 0); return (strcmp_P(lvobjtype, PSTR("lv_linemeter")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_lmeter")) == 0)
case LV_HASP_ROLLER: case LV_HASP_ROLLER:
return (strcmp_P(lvobjtype, PSTR("lv_roller")) == 0); return (strcmp_P(lvobjtype, PSTR("lv_roller")) == 0);
case LV_HASP_SWITCH: case LV_HASP_SWITCH:
return (strcmp_P(lvobjtype, PSTR("lv_sw")) == 0) || (strcmp_P(lvobjtype, PSTR("lv_switch")) == 0); return (strcmp_P(lvobjtype, PSTR("lv_switch")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_sw")) == 0)
case LV_HASP_LED: case LV_HASP_LED:
return (strcmp_P(lvobjtype, PSTR("lv_led")) == 0); return (strcmp_P(lvobjtype, PSTR("lv_led")) == 0);
case LV_HASP_CONTAINER: case LV_HASP_CONTAINER:
return (strcmp_P(lvobjtype, PSTR("lv_cont")) == 0) || (strcmp_P(lvobjtype, PSTR("lv_container")) == 0); return (strcmp_P(lvobjtype, PSTR("lv_container")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_cont")) == 0)
default: default:
return false; return false;
} }
} }
void haspSetToggle(lv_obj_t * obj, bool toggle)
{
#if LVGL7
lv_btn_set_checkable(obj, toggle);
#else
lv_btn_set_toggle(obj, toggle);
#endif
lv_obj_set_event_cb(obj, toggle ? toggle_event_handler : btn_event_handler);
}
// Used in the dispatcher // Used in the dispatcher
void hasp_process_attribute(uint8_t pageid, uint8_t objid, String strAttr, String strPayload) void hasp_process_attribute(uint8_t pageid, uint8_t objid, const char * attr, const char * payload)
{ {
lv_obj_t * obj = FindObjFromId((uint8_t)pageid, (uint8_t)objid); hasp_process_obj_attribute(FindObjFromId(pageid, objid), attr, payload, strlen(payload) > 0);
if(obj) {
if(strPayload != "") /* else {
hasp_set_obj_attribute(obj, strAttr.c_str(), strPayload.c_str());
else {
// publish the change // publish the change
std::string strValue = ""; std::string strValue = "";
if(haspGetObjAttribute(obj, strAttr, strValue)) { if(haspGetObjAttribute(obj, strAttr, strValue)) {
@ -317,8 +299,7 @@ void hasp_process_attribute(uint8_t pageid, uint8_t objid, String strAttr, Strin
} else { } else {
Log.warning(F("HASP: Unknown property: %s"), strAttr.c_str()); Log.warning(F("HASP: Unknown property: %s"), strAttr.c_str());
} }
} // payload } // payload */
} // obj
} }
//////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////
@ -436,23 +417,13 @@ static void kb_event_cb(lv_obj_t * event_kb, lv_event_t event)
if(child->user_data) { if(child->user_data) {
lv_obj_user_data_t objid = 10; lv_obj_user_data_t objid = 10;
if(objid == child->user_data) { if(objid == child->user_data) {
#if LVGL7
strncpy(ssid, lv_textarea_get_text(child), sizeof(ssid)); strncpy(ssid, lv_textarea_get_text(child), sizeof(ssid));
settings[FPSTR(F_CONFIG_SSID)] = ssid; settings[FPSTR(F_CONFIG_SSID)] = ssid;
// if(kb != NULL) lv_keyboard_set_ta(kb, child); // if(kb != NULL) lv_keyboard_set_ta(kb, child);
#else
strncpy(ssid, lv_ta_get_text(child), sizeof(ssid));
settings[FPSTR(F_CONFIG_SSID)] = ssid;
if(kb != NULL) lv_kb_set_ta(kb, child);
#endif
} }
objid = 20; objid = 20;
if(objid == child->user_data) { if(objid == child->user_data) {
#if LVGL7
strncpy(pass, lv_textarea_get_text(child), sizeof(pass)); strncpy(pass, lv_textarea_get_text(child), sizeof(pass));
#else
strncpy(pass, lv_ta_get_text(child), sizeof(pass));
#endif
settings[FPSTR(F_CONFIG_PASS)] = pass; settings[FPSTR(F_CONFIG_PASS)] = pass;
} }
} }
@ -472,11 +443,7 @@ static void kb_event_cb(lv_obj_t * event_kb, lv_event_t event)
} else { } else {
/* prevent double presses, swipes and ghost press on tiny keyboard */ /* prevent double presses, swipes and ghost press on tiny keyboard */
#if LVGL7
if(event == LV_EVENT_RELEASED) lv_keyboard_def_event_cb(event_kb, LV_EVENT_VALUE_CHANGED); if(event == LV_EVENT_RELEASED) lv_keyboard_def_event_cb(event_kb, LV_EVENT_VALUE_CHANGED);
#else
if(event == LV_EVENT_RELEASED) lv_kb_def_event_cb(event_kb, LV_EVENT_VALUE_CHANGED);
#endif
/* Just call the regular event handler */ /* Just call the regular event handler */
// lv_kb_def_event_cb(event_kb, event); // lv_kb_def_event_cb(event_kb, event);
} }
@ -485,11 +452,7 @@ static void ta_event_cb(lv_obj_t * ta, lv_event_t event)
{ {
if(event == LV_EVENT_CLICKED) { if(event == LV_EVENT_CLICKED) {
/* Focus on the clicked text area */ /* Focus on the clicked text area */
#if LVGL7
// if(kb != NULL) lv_keyboard_set_ta(kb, ta); // if(kb != NULL) lv_keyboard_set_ta(kb, ta);
#else
if(kb != NULL) lv_kb_set_ta(kb, ta);
#endif
} }
else if(event == LV_EVENT_INSERT) { else if(event == LV_EVENT_INSERT) {
@ -773,30 +736,11 @@ void hasp_background(uint16_t pageid, uint16_t imageid)
* @param btn pointer to a list button * @param btn pointer to a list button
* @param event type of event that occured * @param event type of event that occured
*/ */
static void IRAM_ATTR btn_event_handler(lv_obj_t * obj, lv_event_t event) void IRAM_ATTR btn_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
char buffer[128]; char buffer[64];
sprintf(buffer, PSTR("HASP: ")); sprintf(buffer, PSTR("HASP: "));
/*
// int16_t id = get_obj_id(obj);
// uint8_t eventid = 0;
uint8_t pageid = 0;
lv_obj_user_data_t objid;
char buffer[128];
if(obj != lv_disp_get_layer_sys(NULL)) {
if(!FindIdFromObj(obj, &pageid, &objid)) {
Log.warning(F("HASP: Event for unknown object"));
return;
}
}
*/
switch(event) { switch(event) {
case LV_EVENT_PRESSED: case LV_EVENT_PRESSED:
memcpy_P(buffer, PSTR("DOWN"), sizeof(buffer)); memcpy_P(buffer, PSTR("DOWN"), sizeof(buffer));
@ -829,10 +773,12 @@ static void IRAM_ATTR btn_event_handler(lv_obj_t * obj, lv_event_t event)
return; return;
case LV_EVENT_DELETE: case LV_EVENT_DELETE:
Log.notice(PSTR("HASP: Object deleted"), event); strcat_P(buffer, PSTR("Object deleted"));
Log.notice(buffer, event);
return; return;
default: default:
Log.warning(F("HASP: Unknown Event %d occured"), event); strcat_P(buffer, PSTR("HASP : Unknown Event % d occured"));
Log.warning(buffer, event);
return; return;
} }
@ -842,95 +788,62 @@ static void IRAM_ATTR btn_event_handler(lv_obj_t * obj, lv_event_t event)
#endif #endif
} else { } else {
#if HASP_USE_MQTT > 0 #if HASP_USE_MQTT > 0
hasp_send_event_attribute(obj, buffer); hasp_send_obj_attribute_event(obj, buffer);
#endif #endif
} }
} }
// ##################### Event Handlers by Version ######################################################## // ##################### Event Handlers by Version ########################################################
#if LVGL7
static void btnmap_event_handler(lv_obj_t * obj, lv_event_t event) static void btnmap_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
// if(event == LV_EVENT_VALUE_CHANGED) haspSendNewValue(obj, lv_btnmatrix_get_pressed_btn(obj)); // if(event == LV_EVENT_VALUE_CHANGED) haspSendNewValue(obj, lv_btnmatrix_get_pressed_btn(obj));
} }
static void toggle_event_handler(lv_obj_t * obj, lv_event_t event) void IRAM_ATTR toggle_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
bool toggled = bool toggled =
lv_btn_get_state(obj) == LV_BTN_STATE_CHECKED_PRESSED || lv_btn_get_state(obj) == LV_BTN_STATE_CHECKED_RELEASED; lv_btn_get_state(obj) == LV_BTN_STATE_CHECKED_PRESSED || lv_btn_get_state(obj) == LV_BTN_STATE_CHECKED_RELEASED;
if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, toggled); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_obj_attribute_val(obj, toggled);
} }
static void switch_event_handler(lv_obj_t * obj, lv_event_t event) static void switch_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, lv_switch_get_state(obj)); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_obj_attribute_val(obj, lv_switch_get_state(obj));
} }
static void checkbox_event_handler(lv_obj_t * obj, lv_event_t event) static void checkbox_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, lv_checkbox_is_checked(obj)); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_obj_attribute_val(obj, lv_checkbox_is_checked(obj));
} }
static void ddlist_event_handler(lv_obj_t * obj, lv_event_t event) static void ddlist_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) { if(event == LV_EVENT_VALUE_CHANGED) {
hasp_send_val_attribute(obj, lv_dropdown_get_selected(obj)); hasp_send_obj_attribute_val(obj, lv_dropdown_get_selected(obj));
char buffer[128]; char buffer[128];
lv_dropdown_get_selected_str(obj, buffer, sizeof(buffer)); lv_dropdown_get_selected_str(obj, buffer, sizeof(buffer));
hasp_send_txt_attribute(obj, buffer); hasp_send_obj_attribute_txt(obj, buffer);
} }
} }
#else
static void btnmap_event_handler(lv_obj_t * obj, lv_event_t event)
{
if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, lv_btnm_get_pressed_btn(obj));
}
static void toggle_event_handler(lv_obj_t * obj, lv_event_t event)
{
bool toggled = lv_btn_get_state(obj) == LV_BTN_STATE_TGL_PR || lv_btn_get_state(obj) == LV_BTN_STATE_TGL_REL;
if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, toggled);
}
static void switch_event_handler(lv_obj_t * obj, lv_event_t event)
{
if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, lv_sw_get_state(obj));
}
static void checkbox_event_handler(lv_obj_t * obj, lv_event_t event)
{
if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, lv_cb_is_checked(obj));
}
static void ddlist_event_handler(lv_obj_t * obj, lv_event_t event)
{
if(event == LV_EVENT_VALUE_CHANGED) {
hasp_send_val_attribute(obj, lv_ddlist_get_selected(obj));
char buffer[128];
lv_ddlist_get_selected_str(obj, buffer, sizeof(buffer));
hasp_send_txt_attribute(obj, String(buffer));
}
}
#endif
static void slider_event_handler(lv_obj_t * obj, lv_event_t event) static void slider_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) hasp_send_val_attribute(obj, lv_slider_get_value(obj)); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_obj_attribute_val(obj, lv_slider_get_value(obj));
} }
static void cpicker_event_handler(lv_obj_t * obj, lv_event_t event) static void cpicker_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) hasp_send_color_attribute(obj, lv_cpicker_get_color(obj)); if(event == LV_EVENT_VALUE_CHANGED) hasp_send_obj_attribute_color(obj, lv_cpicker_get_color(obj));
} }
static void roller_event_handler(lv_obj_t * obj, lv_event_t event) static void roller_event_handler(lv_obj_t * obj, lv_event_t event)
{ {
if(event == LV_EVENT_VALUE_CHANGED) { if(event == LV_EVENT_VALUE_CHANGED) {
hasp_send_val_attribute(obj, lv_roller_get_selected(obj)); hasp_send_obj_attribute_val(obj, lv_roller_get_selected(obj));
char buffer[128]; char buffer[128];
lv_roller_get_selected_str(obj, buffer, sizeof(buffer)); lv_roller_get_selected_str(obj, buffer, sizeof(buffer));
hasp_send_txt_attribute(obj, buffer); hasp_send_obj_attribute_txt(obj, buffer);
} }
} }
@ -986,7 +899,7 @@ void haspSetPage(uint8_t pageid)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
void haspNewObject(const JsonObject & config) void haspNewObject(const JsonObject & config, uint8_t & saved_page_id)
{ {
/* Validate page */ /* Validate page */
uint8_t pageid = config[F("page")].isNull() ? current_page : config[F("page")].as<uint8_t>(); uint8_t pageid = config[F("page")].isNull() ? current_page : config[F("page")].as<uint8_t>();
@ -998,7 +911,7 @@ void haspNewObject(const JsonObject & config)
return; return;
} }
/* save the current pageid */ /* save the current pageid */
current_page = pageid; saved_page_id = pageid;
/* Validate type */ /* Validate type */
if(config[F("objid")].isNull()) return; // comments if(config[F("objid")].isNull()) return; // comments
@ -1044,7 +957,6 @@ void haspNewObject(const JsonObject & config)
case LV_HASP_BUTTON: { case LV_HASP_BUTTON: {
obj = lv_btn_create(parent_obj, NULL); obj = lv_btn_create(parent_obj, NULL);
// bool toggle = config[F("toggle")].as<bool>(); // bool toggle = config[F("toggle")].as<bool>();
// haspSetToggle(obj, toggle);
// lv_btn_set_toggle(obj, toggle); // lv_btn_set_toggle(obj, toggle);
// if(config[F("txt")]) { // if(config[F("txt")]) {
lv_obj_t * label = lv_label_create(obj, NULL); lv_obj_t * label = lv_label_create(obj, NULL);
@ -1056,13 +968,8 @@ void haspNewObject(const JsonObject & config)
break; break;
} }
case LV_HASP_CHECKBOX: { case LV_HASP_CHECKBOX: {
#if LVGL7
obj = lv_checkbox_create(parent_obj, NULL); obj = lv_checkbox_create(parent_obj, NULL);
// if(config[F("txt")]) lv_checkbox_set_text(obj, config[F("txt")].as<String>().c_str()); // if(config[F("txt")]) lv_checkbox_set_text(obj, config[F("txt")].as<String>().c_str());
#else
obj = lv_cb_create(parent_obj, NULL);
// if(config[F("txt")]) lv_cb_set_text(obj, config[F("txt")].as<String>().c_str());
#endif
lv_obj_set_event_cb(obj, checkbox_event_handler); lv_obj_set_event_cb(obj, checkbox_event_handler);
break; break;
} }
@ -1109,11 +1016,7 @@ void haspNewObject(const JsonObject & config)
} }
#if LV_USE_PRELOAD != 0 #if LV_USE_PRELOAD != 0
case LV_HASP_PRELOADER: { case LV_HASP_PRELOADER: {
#if LVGL7
obj = lv_spinner_create(parent_obj, NULL); obj = lv_spinner_create(parent_obj, NULL);
#else
obj = lv_preload_create(parent_obj, NULL);
#endif
break; break;
} }
#endif #endif
@ -1141,15 +1044,9 @@ void haspNewObject(const JsonObject & config)
break; break;
} }
case LV_HASP_LMETER: { case LV_HASP_LMETER: {
#if LVGL7
obj = lv_linemeter_create(parent_obj, NULL); obj = lv_linemeter_create(parent_obj, NULL);
lv_linemeter_set_range(obj, 0, 100); lv_linemeter_set_range(obj, 0, 100);
// lv_linemeter_set_value(obj, val); // lv_linemeter_set_value(obj, val);
#else
obj = lv_lmeter_create(parent_obj, NULL);
lv_lmeter_set_range(obj, 0, 100);
// lv_lmeter_set_value(obj, val);
#endif
lv_obj_set_event_cb(obj, btn_event_handler); lv_obj_set_event_cb(obj, btn_event_handler);
break; break;
} }
@ -1157,13 +1054,8 @@ void haspNewObject(const JsonObject & config)
/* ----- On/Off Objects ------ */ /* ----- On/Off Objects ------ */
case LV_HASP_SWITCH: { case LV_HASP_SWITCH: {
// bool state = config[F("val")].as<bool>(); // bool state = config[F("val")].as<bool>();
#if LVGL7
obj = lv_switch_create(parent_obj, NULL); obj = lv_switch_create(parent_obj, NULL);
// if(state) lv_switch_on(obj, LV_ANIM_OFF); // if(state) lv_switch_on(obj, LV_ANIM_OFF);
#else
obj = lv_sw_create(parent_obj, NULL);
// if(state) lv_sw_on(obj, LV_ANIM_OFF);
#endif
lv_obj_set_event_cb(obj, switch_event_handler); lv_obj_set_event_cb(obj, switch_event_handler);
break; break;
} }
@ -1175,21 +1067,12 @@ void haspNewObject(const JsonObject & config)
} }
/**/ /**/
case LV_HASP_DDLIST: { case LV_HASP_DDLIST: {
#if LVGL7
obj = lv_dropdown_create(parent_obj, NULL); obj = lv_dropdown_create(parent_obj, NULL);
// if(config[F("txt")]) lv_dropdown_set_options(obj, config[F("txt")].as<String>().c_str()); // if(config[F("txt")]) lv_dropdown_set_options(obj, config[F("txt")].as<String>().c_str());
// lv_dropdown_set_selected(obj, val); // lv_dropdown_set_selected(obj, val);
// lv_dropdown_set_fix_width(obj, width); // lv_dropdown_set_fix_width(obj, width);
lv_dropdown_set_draw_arrow(obj, true); lv_dropdown_set_draw_arrow(obj, true);
lv_dropdown_set_anim_time(obj, 250); lv_dropdown_set_anim_time(obj, 250);
#else
obj = lv_ddlist_create(parent_obj, NULL);
// if(config[F("txt")]) lv_ddlist_set_options(obj, config[F("txt")].as<String>().c_str());
// lv_ddlist_set_selected(obj, val);
// lv_ddlist_set_fix_width(obj, width);
lv_ddlist_set_draw_arrow(obj, true);
lv_ddlist_set_anim_time(obj, 250);
#endif
lv_obj_set_top(obj, true); 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, ddlist_event_handler); lv_obj_set_event_cb(obj, ddlist_event_handler);
@ -1200,11 +1083,7 @@ void haspNewObject(const JsonObject & config)
bool infinite = config[F("infinite")].as<bool>(); bool infinite = config[F("infinite")].as<bool>();
// if(config[F("txt")]) lv_roller_set_options(obj, config[F("txt")].as<String>().c_str(), infinite); // if(config[F("txt")]) lv_roller_set_options(obj, config[F("txt")].as<String>().c_str(), infinite);
// lv_roller_set_selected(obj, val, LV_ANIM_ON); // lv_roller_set_selected(obj, val, LV_ANIM_ON);
#if LVGL7
// lv_roller_set_fix_width(obj, width); // lv_roller_set_fix_width(obj, width);
#else
// lv_roller_set_fix_width(obj, width);
#endif
// 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, roller_event_handler); lv_obj_set_event_cb(obj, roller_event_handler);
break; break;
@ -1242,7 +1121,7 @@ void haspNewObject(const JsonObject & config)
k = keyValue.key().c_str(); k = keyValue.key().c_str();
if(k != F("page") && k != F("id") && k != F("objid") && k != F("parentid")) { if(k != F("page") && k != F("id") && k != F("objid") && k != F("parentid")) {
v = keyValue.value().as<String>(); v = keyValue.value().as<String>();
hasp_set_obj_attribute(obj, k.c_str(), v.c_str()); hasp_process_obj_attribute(obj, k.c_str(), v.c_str(), true);
Log.trace(F(" * %s => %s"), k.c_str(), v.c_str()); Log.trace(F(" * %s => %s"), k.c_str(), v.c_str());
} }
} }
@ -1290,9 +1169,8 @@ void haspLoadPage(String pages)
while(deserializeJson(config, file) == DeserializationError::Ok) { while(deserializeJson(config, file) == DeserializationError::Ok) {
serializeJson(config, Serial); serializeJson(config, Serial);
Serial.println(); Serial.println();
haspNewObject(config.as<JsonObject>()); haspNewObject(config.as<JsonObject>(), savedPage);
} }
current_page = savedPage;
Log.notice(F("HASP: File %s loaded"), pages.c_str()); Log.notice(F("HASP: File %s loaded"), pages.c_str());
file.close(); file.close();