diff --git a/src/config.h b/src/config.h index 956eea6..bb6feb9 100644 --- a/src/config.h +++ b/src/config.h @@ -31,6 +31,6 @@ /* * firmeware version string */ - #define __FIRMWARE__ "2020072707" + #define __FIRMWARE__ "2020072708" #endif // _CONFIG_H diff --git a/src/gui/keyboard.cpp b/src/gui/keyboard.cpp index cb4df52..dd14e95 100644 --- a/src/gui/keyboard.cpp +++ b/src/gui/keyboard.cpp @@ -23,30 +23,54 @@ #include "keyboard.h" +static lv_obj_t *kb_screen = NULL; +static lv_obj_t *kb_textarea = NULL; static lv_obj_t *kb = NULL; +static lv_obj_t *kb_user_textarea = NULL; +static lv_style_t kb_style; + static void kb_event_cb(lv_obj_t * ta, lv_event_t event); void keyboard_setup( void ) { if ( kb != NULL ) return; - - kb = lv_keyboard_create( lv_scr_act() , NULL); -// lv_obj_set_size(kb, LV_HOR_RES, LV_VER_RES / 2 ); - lv_obj_set_size(kb, LV_HOR_RES, LV_VER_RES / 3); - lv_obj_align( kb, lv_scr_act(), LV_ALIGN_IN_BOTTOM_MID, 0, 0 ); - lv_keyboard_set_cursor_manage(kb, true); - lv_obj_set_event_cb( kb, kb_event_cb ); - lv_obj_set_hidden( kb, true ); + lv_style_init( &kb_style ); + lv_style_set_radius(&kb_style, LV_OBJ_PART_MAIN, 0); + lv_style_set_bg_color(&kb_style, LV_OBJ_PART_MAIN, LV_COLOR_GRAY); + lv_style_set_bg_opa(&kb_style, LV_OBJ_PART_MAIN, LV_OPA_100); + lv_style_set_border_width(&kb_style, LV_OBJ_PART_MAIN, 0); + lv_style_set_text_color(&kb_style, LV_OBJ_PART_MAIN, LV_COLOR_WHITE); + lv_style_set_image_recolor(&kb_style, LV_OBJ_PART_MAIN, LV_COLOR_WHITE); + + kb_screen = lv_cont_create( lv_scr_act(), NULL ); + lv_obj_add_style( kb_screen, LV_OBJ_PART_MAIN, &kb_style ); + lv_obj_set_size( kb_screen, LV_HOR_RES_MAX , LV_VER_RES_MAX - 20 ); + lv_obj_align( kb_screen, lv_scr_act(), LV_ALIGN_CENTER, 0, 20); + + kb_textarea = lv_textarea_create( kb_screen, NULL ); + lv_obj_set_size( kb_textarea, LV_HOR_RES_MAX - 10, 60 ); + lv_textarea_set_one_line( kb_textarea, true); + lv_obj_align( kb_textarea, kb_screen, LV_ALIGN_IN_TOP_MID, 0, 5 ); + + kb = lv_keyboard_create( lv_scr_act() , NULL); + lv_obj_set_size (kb, LV_HOR_RES, ( LV_VER_RES / 4 ) * 3 - 20); + lv_obj_align( kb, lv_scr_act(), LV_ALIGN_IN_BOTTOM_MID, 0, 0 ); + lv_keyboard_set_cursor_manage( kb, true); + lv_obj_set_event_cb( kb, kb_event_cb ); + + keyboard_hide(); } -static void kb_event_cb(lv_obj_t * ta, lv_event_t event) { +static void kb_event_cb( lv_obj_t * ta, lv_event_t event ) { lv_keyboard_def_event_cb( ta, event ); + Serial.printf("Keyboard event: %d\r\n", event ); if ( event == LV_EVENT_CANCEL ) { - lv_obj_set_hidden( kb, true ); + keyboard_hide(); } if ( event == LV_EVENT_APPLY ) { - lv_obj_set_hidden( kb, true ); + lv_textarea_set_text( kb_user_textarea, lv_textarea_get_text( kb_textarea ) ); + keyboard_hide(); } } @@ -54,17 +78,23 @@ void keyboard_set_textarea( lv_obj_t *textarea ){ if ( kb == NULL ) return; keyboard_show(); - lv_keyboard_set_textarea( kb, textarea ); + kb_user_textarea = textarea; + lv_textarea_set_text( kb_textarea, lv_textarea_get_text( textarea ) ); + lv_keyboard_set_textarea( kb, kb_textarea ); } void keyboard_hide( void ) { if ( kb == NULL ) return; + lv_obj_set_hidden( kb_screen, true ); + lv_obj_set_hidden( kb_textarea, true ); lv_obj_set_hidden( kb, true ); } void keyboard_show( void ) { if ( kb == NULL ) return; + lv_obj_set_hidden( kb_screen, false ); + lv_obj_set_hidden( kb_textarea, false ); lv_obj_set_hidden( kb, false ); } diff --git a/src/gui/widget/weather/weather_setup.cpp b/src/gui/widget/weather/weather_setup.cpp index ead94c1..3d952ac 100644 --- a/src/gui/widget/weather/weather_setup.cpp +++ b/src/gui/widget/weather/weather_setup.cpp @@ -148,9 +148,6 @@ static void weather_apikey_event_cb( lv_obj_t * obj, lv_event_t event ) { if( event == LV_EVENT_CLICKED ) { keyboard_set_textarea( obj ); } - else if ( event == LV_EVENT_DEFOCUSED ) { - keyboard_hide(); - } } static void weather_autosync_onoff_event_handler( lv_obj_t * obj, lv_event_t event ) { diff --git a/ttgo-t-watch2020_v1.ino.bin b/ttgo-t-watch2020_v1.ino.bin index d3ee016..ec1df93 100644 Binary files a/ttgo-t-watch2020_v1.ino.bin and b/ttgo-t-watch2020_v1.ino.bin differ diff --git a/ttgo-t-watch2020_v1.version.txt b/ttgo-t-watch2020_v1.version.txt index f223128..b1b9194 100644 --- a/ttgo-t-watch2020_v1.version.txt +++ b/ttgo-t-watch2020_v1.version.txt @@ -1 +1 @@ -2020072707 +2020072708