mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-24 11:46:34 +00:00
Add textarea object
This commit is contained in:
parent
d1783bbb15
commit
0217063690
@ -218,7 +218,7 @@ static bool my_line_set_points(lv_obj_t* obj, const char* payload)
|
||||
}
|
||||
}
|
||||
|
||||
my_line_clear_points(obj); // free previous pointlist
|
||||
my_line_clear_points(obj); // free previous pointlist
|
||||
lv_line_set_points(obj, point_arr, index); // arr.size());
|
||||
return true;
|
||||
}
|
||||
@ -829,7 +829,8 @@ static hasp_attribute_type_t hasp_process_arc_attribute(lv_obj_t* obj, uint16_t
|
||||
return HASP_ATTR_TYPE_INT;
|
||||
}
|
||||
|
||||
static hasp_attribute_type_t hasp_process_spinner_attribute(lv_obj_t* obj, uint16_t attr_hash, int32_t& val, bool update)
|
||||
static hasp_attribute_type_t hasp_process_spinner_attribute(lv_obj_t* obj, uint16_t attr_hash, int32_t& val,
|
||||
bool update)
|
||||
{
|
||||
// We already know it's a spnner object
|
||||
switch(attr_hash) {
|
||||
@ -1182,6 +1183,13 @@ static hasp_attribute_type_t attribute_common_align(lv_obj_t* obj, const char* a
|
||||
val = lv_label_get_align(obj);
|
||||
break;
|
||||
|
||||
case LV_HASP_TEXTAREA:
|
||||
if(update)
|
||||
lv_textarea_set_text_align(obj, val);
|
||||
else
|
||||
val = my_textarea_get_text_align(obj);
|
||||
break;
|
||||
|
||||
case LV_HASP_ROLLER:
|
||||
if(update)
|
||||
lv_roller_set_align(obj, val);
|
||||
@ -1255,6 +1263,7 @@ static hasp_attribute_type_t attribute_common_text(lv_obj_t* obj, const char* at
|
||||
{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_TEXTAREA, ATTR_TEXT, lv_textarea_set_text, lv_textarea_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},
|
||||
@ -1390,9 +1399,11 @@ static hasp_attribute_type_t specific_int_attribute(lv_obj_t* obj, uint16_t attr
|
||||
{LV_HASP_SWITCH, ATTR_ANIM_TIME, lv_switch_set_anim_time, lv_switch_get_anim_time},
|
||||
{LV_HASP_LIST, ATTR_ANIM_TIME, lv_list_set_anim_time, lv_list_get_anim_time},
|
||||
{LV_HASP_MSGBOX, ATTR_ANIM_TIME, lv_msgbox_set_anim_time, lv_msgbox_get_anim_time},
|
||||
{LV_HASP_PAGE, ATTR_ANIM_TIME, lv_page_set_anim_time, lv_page_get_anim_time},
|
||||
{LV_HASP_ROLLER, ATTR_ANIM_TIME, lv_roller_set_anim_time, lv_roller_get_anim_time},
|
||||
{LV_HASP_TABVIEW, ATTR_ANIM_TIME, lv_tabview_set_anim_time, lv_tabview_get_anim_time},
|
||||
#if LVGL_VERSION_MAJOR == 7 && LV_USE_PAGE
|
||||
{LV_HASP_PAGE, ATTR_ANIM_TIME, lv_page_set_anim_time, lv_page_get_anim_time},
|
||||
#endif
|
||||
#if LV_USE_WINDOW > 0
|
||||
{LV_HASP_WINDOW, ATTR_ANIM_TIME, lv_win_set_anim_time, lv_win_get_anim_time},
|
||||
#endif
|
||||
|
@ -3,6 +3,13 @@
|
||||
|
||||
#include "hasplib.h"
|
||||
|
||||
lv_label_align_t my_textarea_get_text_align(lv_obj_t* ta)
|
||||
{
|
||||
lv_textarea_ext_t* ext = (lv_textarea_ext_t*)lv_obj_get_ext_attr(ta);
|
||||
lv_obj_t* label = lv_textarea_get_label(ta);
|
||||
return lv_label_get_align(label);
|
||||
}
|
||||
|
||||
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;
|
||||
|
@ -255,7 +255,7 @@ static void log_event(const char* name, lv_event_t event)
|
||||
|
||||
switch(event) {
|
||||
case LV_EVENT_PRESSED:
|
||||
LOG_TRACE(TAG_EVENT, "%s Pressed", name);
|
||||
LOG_TRACE(TAG_EVENT, "%s Changed", name);
|
||||
break;
|
||||
|
||||
case LV_EVENT_PRESS_LOST:
|
||||
@ -348,6 +348,35 @@ void swipe_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a textarea is clicked
|
||||
* @param obj pointer to a textarea object
|
||||
* @param event type of event that occured
|
||||
*/
|
||||
void textarea_event_handler(lv_obj_t* obj, lv_event_t event)
|
||||
{
|
||||
log_event("textarea", event);
|
||||
|
||||
if(event == LV_EVENT_VALUE_CHANGED) {
|
||||
LOG_TRACE(TAG_EVENT, "Changed to: %s", lv_textarea_get_text(obj));
|
||||
|
||||
uint8_t hasp_event_id;
|
||||
if(!translate_event(obj, event, hasp_event_id)) return;
|
||||
|
||||
char data[100];
|
||||
char eventname[8];
|
||||
Parser::get_event_name(hasp_event_id, eventname, sizeof(eventname));
|
||||
|
||||
snprintf_P(data, sizeof(data), PSTR("{\"event\":\"%s\",\"text\":\"%s\"}"), eventname,
|
||||
lv_textarea_get_text(obj));
|
||||
event_send_object_data(obj, data);
|
||||
} else if(event == LV_EVENT_FOCUSED) {
|
||||
lv_textarea_set_cursor_hidden(obj, false);
|
||||
} else if(event == LV_EVENT_DEFOCUSED) {
|
||||
lv_textarea_set_cursor_hidden(obj, true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when a button-style object is clicked
|
||||
* @param obj pointer to a button object
|
||||
|
@ -26,5 +26,6 @@ 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 textarea_event_handler(lv_obj_t* obj, lv_event_t event);
|
||||
|
||||
#endif // HASP_EVENT_H
|
@ -343,6 +343,16 @@ void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id)
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_TEXTAREA:
|
||||
case HASP_OBJ_TEXTAREA:
|
||||
obj = lv_textarea_create(parent_obj, NULL);
|
||||
if(obj) {
|
||||
lv_obj_set_event_cb(obj, textarea_event_handler);
|
||||
lv_textarea_set_cursor_click_pos(obj, true);
|
||||
obj->user_data.objid = LV_HASP_TEXTAREA;
|
||||
}
|
||||
break;
|
||||
|
||||
case LV_HASP_IMAGE:
|
||||
case HASP_OBJ_IMG:
|
||||
obj = lv_img_create(parent_obj, NULL);
|
||||
@ -380,12 +390,14 @@ void hasp_new_object(const JsonObject& config, uint8_t& saved_page_id)
|
||||
}
|
||||
break;
|
||||
|
||||
#if LVGL_VERSION_MAJOR == 7 && LV_USE_PAGE
|
||||
case LV_HASP_PAGE:
|
||||
case HASP_OBJ_PAGE:
|
||||
obj = lv_page_create(parent_obj, NULL);
|
||||
if(obj) obj->user_data.objid = LV_HASP_PAGE;
|
||||
// No event handler for pages
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if LV_USE_WIN && LVGL_VERSION_MAJOR == 7
|
||||
case LV_HASP_WINDOW:
|
||||
|
@ -291,7 +291,7 @@ void guiSetup()
|
||||
|
||||
/* Initialize GIF decoder */
|
||||
#if HASP_USE_GIFDECODE > 0
|
||||
// lv_gif_init();
|
||||
// lv_gif_init();
|
||||
#endif
|
||||
|
||||
/* Initialize JPG decoder */
|
||||
@ -476,7 +476,7 @@ bool guiGetConfig(const JsonObject& settings)
|
||||
}
|
||||
changed = true;
|
||||
|
||||
#if TOUCH_DRIVER == 2046 && defined(USER_SETUP_LOADED) && defined(TOUCH_CS)
|
||||
#if TOUCH_DRIVER == 2046 && defined(USER_SETUP_LOADED) && defined(TOUCH_CS)
|
||||
// tft_espi_set_touch(gui_settings.cal_data);
|
||||
haspTft.tft.setTouch(gui_settings.cal_data);
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user