minor updates during tests
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
|
||||
|
||||
#include "../lv_appx/lv_app_example.h"
|
||||
#include "../lv_appx/lv_app_phantom.h"
|
||||
#include "../lv_appx/lv_app_sysmon.h"
|
||||
#include "../lv_appx/lv_app_terminal.h"
|
||||
#include "../lv_appx/lv_app_files.h"
|
||||
@@ -77,7 +78,6 @@ static lv_obj_t * app_scr; /*Screen of the applications*/
|
||||
#if LV_APP_DESKTOP != 0
|
||||
static lv_obj_t * menuh; /*Holder of timg_bubbleshe menu on the top*/
|
||||
static lv_obj_t * app_btn; /*The "Apps" button on the menu*/
|
||||
//static lv_obj_t * sys_apph; /*Holder of the system app. buttons*/
|
||||
static lv_obj_t * sc_page; /*A page for the shortcuts */
|
||||
#endif
|
||||
|
||||
@@ -124,6 +124,12 @@ void lv_app_init(void)
|
||||
*dsc = lv_app_example_init();
|
||||
#endif
|
||||
|
||||
#if USE_LV_APP_PHANTOM != 0
|
||||
dsc = ll_ins_head(&app_dsc_ll);
|
||||
*dsc = lv_app_phantom_init();
|
||||
#endif
|
||||
|
||||
|
||||
#if USE_LV_APP_SYSMON != 0
|
||||
dsc = ll_ins_head(&app_dsc_ll);
|
||||
*dsc = lv_app_sysmon_init();
|
||||
@@ -185,7 +191,7 @@ void lv_app_close(lv_app_inst_t * app)
|
||||
lv_app_con_del(app, NULL);
|
||||
lv_app_con_del(NULL, app);
|
||||
|
||||
app->dsc->app_close(app);
|
||||
if(app->dsc->app_close != NULL) app->dsc->app_close(app);
|
||||
|
||||
memset(app->app_data, 0, app->dsc->app_data_size);
|
||||
dm_free(app->app_data);
|
||||
@@ -203,6 +209,8 @@ void lv_app_close(lv_app_inst_t * app)
|
||||
lv_obj_t * lv_app_sc_open(lv_app_inst_t * app)
|
||||
{
|
||||
|
||||
if(app->dsc->sc_open == NULL) return NULL;
|
||||
|
||||
/*Create a basic shortcut*/
|
||||
#if LV_APP_DESKTOP != 0
|
||||
app->sc = lv_btn_create(sc_page, NULL);
|
||||
@@ -254,6 +262,7 @@ lv_obj_t * lv_app_sc_open(lv_app_inst_t * app)
|
||||
void lv_app_sc_close(lv_app_inst_t * app)
|
||||
{
|
||||
if(app->sc == NULL) return;
|
||||
if(app->dsc->sc_close != NULL) app->dsc->sc_close(app);
|
||||
lv_obj_del(app->sc);
|
||||
app->sc = NULL;
|
||||
app->sc_title = NULL;
|
||||
@@ -275,22 +284,24 @@ lv_obj_t * lv_app_win_open(lv_app_inst_t * app)
|
||||
app_list = NULL;
|
||||
}
|
||||
|
||||
if(app->dsc->win_open == NULL) return NULL;
|
||||
|
||||
app->win = lv_win_create(lv_scr_act(), NULL);
|
||||
lv_obj_set_free_p(app->win, app);
|
||||
lv_obj_set_style(lv_win_get_header(app->win), &app_style.win_header);
|
||||
lv_win_set_title(app->win, app->dsc->name);
|
||||
|
||||
lv_win_set_style_cbtn(app->win, &app_style.win_cbtn_rel, &app_style.win_cbtn_pr);
|
||||
lv_page_set_sb_mode(lv_win_get_page(app->win), LV_PAGE_SB_MODE_ON);
|
||||
lv_win_set_styles_cbtn(app->win, &app_style.win_cbtn_rel, &app_style.win_cbtn_pr);
|
||||
|
||||
if(app->dsc->conf_open != NULL) {
|
||||
lv_win_add_ctrl_btn(app->win, SYMBOL_SETUP, lv_app_win_conf_action);
|
||||
lv_win_add_cbtn(app->win, SYMBOL_SETUP, lv_app_win_conf_action);
|
||||
}
|
||||
lv_win_add_ctrl_btn(app->win, SYMBOL_DOWN, lv_app_win_minim_action);
|
||||
lv_win_add_ctrl_btn(app->win, SYMBOL_CLOSE,lv_app_win_close_action);
|
||||
lv_win_add_cbtn(app->win, SYMBOL_DOWN, lv_app_win_minim_action);
|
||||
lv_win_add_cbtn(app->win, SYMBOL_CLOSE,lv_app_win_close_action);
|
||||
|
||||
app->win_data = dm_alloc(app->dsc->win_data_size);
|
||||
|
||||
app->dsc->win_open(app, app->win);
|
||||
app->dsc->win_open(app, app->win);
|
||||
|
||||
return app->win;
|
||||
}
|
||||
@@ -303,7 +314,9 @@ void lv_app_win_close(lv_app_inst_t * app)
|
||||
{
|
||||
if(app->win == NULL) return;
|
||||
|
||||
lv_app_kb_close(false);
|
||||
lv_app_kb_close(false);
|
||||
|
||||
if(app->dsc->win_close != NULL) app->dsc->win_close(app);
|
||||
|
||||
lv_obj_del(app->win);
|
||||
app->win = NULL;
|
||||
@@ -516,16 +529,6 @@ static void lv_app_init_desktop(void)
|
||||
lv_label_set_text(app_label, "Apps");
|
||||
lv_obj_set_pos(app_btn, 0, 0);
|
||||
lv_obj_set_pos(menuh, 0, 0);
|
||||
/*
|
||||
sys_apph = lv_cont_create(menuh, NULL);
|
||||
lv_cont_set_layout(sys_apph, LV_CONT_LAYOUT_ROW_M);
|
||||
lv_cont_set_fit(sys_apph, true, false);
|
||||
lv_obj_set_style(sys_apph, lv_rects_get(LV_RECTS_TRANSP, NULL));
|
||||
lv_obj_t * clock = lv_label_create(sys_apph, NULL);
|
||||
lv_obj_set_style(clock, &app_style.menu_btn_label);
|
||||
lv_label_set_text(clock, "20:17");
|
||||
|
||||
lv_obj_align(sys_apph, NULL, LV_ALIGN_IN_RIGHT_MID, 0, 0);*/
|
||||
|
||||
/*Shortcut area*/
|
||||
sc_page = lv_page_create(lv_scr_act(), NULL);
|
||||
@@ -736,7 +739,7 @@ static lv_action_res_t lv_app_sc_lpr_action(lv_obj_t * sc, lv_dispi_t * dispi)
|
||||
*/
|
||||
static lv_action_res_t lv_app_win_close_action(lv_obj_t * close_btn, lv_dispi_t * dispi)
|
||||
{
|
||||
lv_obj_t * win = lv_win_get_from_ctrl_btn(close_btn);
|
||||
lv_obj_t * win = lv_win_get_from_cbtn(close_btn);
|
||||
lv_app_inst_t * app = lv_obj_get_free_p(win);
|
||||
|
||||
lv_app_kb_close(false);
|
||||
@@ -771,7 +774,7 @@ static lv_action_res_t lv_app_win_close_action(lv_obj_t * close_btn, lv_dispi_t
|
||||
*/
|
||||
static lv_action_res_t lv_app_win_minim_action(lv_obj_t * minim_btn, lv_dispi_t * dispi)
|
||||
{
|
||||
lv_obj_t * win = lv_win_get_from_ctrl_btn(minim_btn);
|
||||
lv_obj_t * win = lv_win_get_from_cbtn(minim_btn);
|
||||
lv_app_inst_t * app = lv_obj_get_free_p(win);
|
||||
|
||||
lv_app_kb_close(false);
|
||||
@@ -797,7 +800,7 @@ static lv_action_res_t lv_app_win_conf_action(lv_obj_t * set_btn, lv_dispi_t * d
|
||||
app_list = NULL;
|
||||
}
|
||||
|
||||
lv_obj_t * win = lv_win_get_from_ctrl_btn(set_btn);
|
||||
lv_obj_t * win = lv_win_get_from_cbtn(set_btn);
|
||||
lv_app_inst_t * app = lv_obj_get_free_p(win);
|
||||
|
||||
app->conf_win = lv_win_create(lv_scr_act(), NULL);
|
||||
@@ -805,9 +808,9 @@ static lv_action_res_t lv_app_win_conf_action(lv_obj_t * set_btn, lv_dispi_t * d
|
||||
|
||||
char buf[256];
|
||||
sprintf(buf, "%s settings", app->dsc->name);
|
||||
lv_win_add_ctrl_btn(app->conf_win, SYMBOL_CLOSE ,lv_win_close_action);
|
||||
lv_win_add_cbtn(app->conf_win, SYMBOL_CLOSE ,lv_win_close_action);
|
||||
lv_win_set_title(app->conf_win, buf);
|
||||
lv_win_set_style_cbtn(app->conf_win, &app_style.win_cbtn_rel, &app_style.win_cbtn_pr);
|
||||
lv_win_set_styles_cbtn(app->conf_win, &app_style.win_cbtn_rel, &app_style.win_cbtn_pr);
|
||||
lv_obj_t * scrl = lv_page_get_scrl(lv_win_get_page(app->conf_win));
|
||||
lv_cont_set_layout(scrl, LV_CONT_LAYOUT_COL_L);
|
||||
|
||||
@@ -840,8 +843,6 @@ static lv_action_res_t lv_app_win_open_anim_create(lv_app_inst_t * app)
|
||||
lv_obj_get_cords(app->sc, &cords);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*Temporally set a simpler style for the window during the animation*/
|
||||
lv_obj_t * win_page = lv_win_get_page(app->win);
|
||||
lv_page_set_sb_mode(win_page, LV_PAGE_SB_MODE_OFF);
|
||||
@@ -917,12 +918,6 @@ static lv_action_res_t lv_app_win_minim_anim_create(lv_app_inst_t * app)
|
||||
lv_obj_t * win_page = lv_win_get_page(app->win);
|
||||
lv_page_set_sb_mode(win_page, LV_PAGE_SB_MODE_OFF);
|
||||
|
||||
/*Hide some elements to speed up the animation*/
|
||||
lv_obj_set_hidden(((lv_win_ext_t *)app->win->ext)->btnh, true);
|
||||
lv_obj_set_hidden(((lv_win_ext_t *)app->win->ext)->title, true);
|
||||
lv_obj_set_hidden(lv_page_get_scrl(win_page), true);
|
||||
|
||||
|
||||
/*Hide some elements to speed up the animation*/
|
||||
lv_obj_set_hidden(((lv_win_ext_t *)app->win->ext)->btnh, true);
|
||||
lv_obj_set_hidden(((lv_win_ext_t *)app->win->ext)->title, true);
|
||||
@@ -981,6 +976,8 @@ static void lv_app_win_open_anim_cb(lv_obj_t * app_win)
|
||||
lv_obj_set_hidden(((lv_win_ext_t *)app_win->ext)->btnh, false);
|
||||
lv_obj_set_hidden(((lv_win_ext_t *)app_win->ext)->title, false);
|
||||
lv_obj_set_hidden(lv_page_get_scrl(win_page), false);
|
||||
|
||||
lv_page_set_sb_mode(win_page, LV_PAGE_SB_MODE_AUTO);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -47,6 +47,7 @@ static lv_obj_t * fsel_win;
|
||||
static lv_obj_t * fsel_list;
|
||||
static void * fsel_param;
|
||||
static void (*fsel_ok_action)(void *, const char *);
|
||||
static lv_style_t style_btn_symbol;
|
||||
|
||||
/**********************
|
||||
* MACROS
|
||||
@@ -61,7 +62,8 @@ static void (*fsel_ok_action)(void *, const char *);
|
||||
*/
|
||||
void lv_app_fsel_init(void)
|
||||
{
|
||||
//TODO lv_lists_get(LV_LISTS_TRANSP, &fsel_lists);
|
||||
lv_style_get(LV_STYLE_BTN_REL, &style_btn_symbol);
|
||||
style_btn_symbol.font = font_get(LV_IMG_DEF_SYMBOL_FONT);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -90,11 +92,14 @@ void lv_app_fsel_open(const char * path, const char * filter, void * param, void
|
||||
/*Check filter: NULL and "" mean no filtering*/
|
||||
if(fsel_filter == NULL) fsel_filter = "";
|
||||
|
||||
lv_app_style_t * app_style = lv_app_style_get();
|
||||
|
||||
/*Create a window for the File selector*/
|
||||
fsel_win = lv_win_create(lv_scr_act(), NULL);
|
||||
lv_obj_set_size(fsel_win, LV_HOR_RES, LV_VER_RES);
|
||||
lv_win_set_styles_cbtn(fsel_win, &app_style->win_cbtn_rel, &app_style->win_cbtn_pr);
|
||||
|
||||
lv_win_add_ctrl_btn(fsel_win, "U:/icon_close", fsel_close_action);
|
||||
lv_win_add_cbtn(fsel_win, SYMBOL_CLOSE, fsel_close_action);
|
||||
|
||||
fsel_refr(); /*Refresh the list*/
|
||||
|
||||
@@ -138,31 +143,32 @@ static void fsel_refr(void)
|
||||
/*Create a new list*/
|
||||
fsel_list = lv_list_create(fsel_win, NULL);
|
||||
lv_obj_set_width(fsel_list, lv_win_get_width(fsel_win));
|
||||
//TODO lv_obj_set_style(fsel_list, lv_lists_get(LV_LISTS_TRANSP, NULL));
|
||||
lv_list_set_style_img(fsel_list, &style_btn_symbol);
|
||||
lv_obj_set_style(lv_page_get_scrl(fsel_list), lv_style_get(LV_STYLE_TRANSP_TIGHT, NULL));
|
||||
lv_obj_set_drag_parent(fsel_list, true);
|
||||
lv_obj_set_drag_parent(lv_page_get_scrl(fsel_list), true);
|
||||
lv_cont_set_fit(fsel_list, false, true);
|
||||
|
||||
fs_res_t res = FS_RES_OK;
|
||||
lv_obj_t * liste;
|
||||
|
||||
/*At empty path show the drivers */
|
||||
if(fsel_path[0] == '\0') {
|
||||
char drv[16];
|
||||
char buf[2];
|
||||
lv_obj_t * liste;
|
||||
fs_get_letters(drv);
|
||||
uint8_t i;
|
||||
for(i = 0; drv[i] != '\0'; i++) {
|
||||
buf[0] = drv[i];
|
||||
buf[1] = '\0';
|
||||
liste = lv_list_add(fsel_list, "U:/icon_driver", buf, fsel_drv_action);
|
||||
liste = lv_list_add(fsel_list, SYMBOL_DRIVE, buf, fsel_drv_action);
|
||||
/*Add long press action to choose the driver as a folder*/
|
||||
if(fsel_filter[0] == '/') lv_btn_set_lpr_action(liste, fsel_drv_lpr_action);
|
||||
}
|
||||
}
|
||||
/*List the files/folders with fs interface*/
|
||||
else {
|
||||
lv_list_add(fsel_list, "U:/icon_up", "Up", fsel_up_action);
|
||||
liste = lv_list_add(fsel_list, SYMBOL_UP, "Up", fsel_up_action);
|
||||
|
||||
fs_readdir_t rd;
|
||||
res = fs_readdir_init(&rd, fsel_path);
|
||||
@@ -173,7 +179,7 @@ static void fsel_refr(void)
|
||||
|
||||
/*At not first page add prev. page button */
|
||||
if(fsel_file_cnt != 0) {
|
||||
lv_list_add(fsel_list, "U:/icon_left", "Previous page", fsel_prev_action);
|
||||
liste = lv_list_add(fsel_list, SYMBOL_LEFT, "Previous page", fsel_prev_action);
|
||||
}
|
||||
|
||||
char fn[LV_APP_FSEL_FN_MAX_LEN];
|
||||
@@ -182,7 +188,7 @@ static void fsel_refr(void)
|
||||
uint16_t file_cnt = 0;
|
||||
while(file_cnt <= fsel_file_cnt) {
|
||||
res = fs_readdir(&rd, fn);
|
||||
if(res != FS_RES_OK || fn[0] == '\0'){
|
||||
if(res != FS_RES_OK){
|
||||
lv_app_notice_add("Can not read the path\nin File selector");
|
||||
return;
|
||||
}
|
||||
@@ -193,7 +199,7 @@ static void fsel_refr(void)
|
||||
while(res == FS_RES_OK && fn[0] != '\0') {
|
||||
if(fn[0] == '/') { /*Add a folder*/
|
||||
lv_obj_t * liste;
|
||||
liste = lv_list_add(fsel_list, "U:/icon_folder", &fn[1], fsel_folder_action);
|
||||
liste = lv_list_add(fsel_list, SYMBOL_FOLDER, &fn[1], fsel_folder_action);
|
||||
/*Add long press action to choose a folder*/
|
||||
if(fsel_filter[0] == '/') lv_btn_set_lpr_action(liste, fsel_folder_lpr_action);
|
||||
|
||||
@@ -204,7 +210,7 @@ static void fsel_refr(void)
|
||||
else if(fsel_filter[0] == '\0' || /*No filtering or ...*/
|
||||
(strcmp(fs_get_ext(fn), fsel_filter) == 0 && /*.. the filter matches*/
|
||||
fsel_filter[0] != '/')) {
|
||||
lv_list_add(fsel_list, "U:/icon_file", fn, fsel_file_action);
|
||||
liste = lv_list_add(fsel_list, SYMBOL_FILE, fn, fsel_file_action);
|
||||
fsel_file_cnt ++;
|
||||
file_cnt ++;
|
||||
}
|
||||
@@ -214,7 +220,7 @@ static void fsel_refr(void)
|
||||
|
||||
/*Show only LV_APP_FSEL_MAX_FILE elements and add a Next page button*/
|
||||
if(fsel_file_cnt != 0 && fsel_file_cnt % LV_APP_FSEL_PAGE_SIZE == 0) {
|
||||
lv_list_add(fsel_list, "U:/icon_right", "Next page", fsel_next_action);
|
||||
liste = lv_list_add(fsel_list, SYMBOL_RIGHT, "Next page", fsel_next_action);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -297,7 +303,7 @@ static lv_action_res_t fsel_prev_action(lv_obj_t * prev, lv_dispi_t * dispi)
|
||||
*/
|
||||
static lv_action_res_t fsel_drv_action(lv_obj_t * drv, lv_dispi_t * dispi)
|
||||
{
|
||||
sprintf(fsel_path, "%s:", lv_list_element_get_txt(drv));
|
||||
sprintf(fsel_path, "%s:", lv_list_get_element_text(drv));
|
||||
fsel_file_cnt = 0;
|
||||
fsel_refr();
|
||||
return LV_ACTION_RES_INV;
|
||||
@@ -311,7 +317,7 @@ static lv_action_res_t fsel_drv_action(lv_obj_t * drv, lv_dispi_t * dispi)
|
||||
*/
|
||||
static lv_action_res_t fsel_drv_lpr_action(lv_obj_t * drv, lv_dispi_t * dispi)
|
||||
{
|
||||
sprintf(fsel_path, "%s:", lv_list_element_get_txt(drv));
|
||||
sprintf(fsel_path, "%s:", lv_list_get_element_text(drv));
|
||||
|
||||
if(fsel_ok_action != NULL) {
|
||||
fsel_ok_action(fsel_param, fsel_path);
|
||||
@@ -330,7 +336,7 @@ static lv_action_res_t fsel_drv_lpr_action(lv_obj_t * drv, lv_dispi_t * dispi)
|
||||
*/
|
||||
static lv_action_res_t fsel_folder_action(lv_obj_t * folder, lv_dispi_t * dispi)
|
||||
{
|
||||
sprintf(fsel_path, "%s/%s", fsel_path, lv_list_element_get_txt(folder));
|
||||
sprintf(fsel_path, "%s/%s", fsel_path, lv_list_get_element_text(folder));
|
||||
fsel_file_cnt = 0;
|
||||
fsel_refr();
|
||||
return LV_ACTION_RES_INV;
|
||||
@@ -344,7 +350,7 @@ static lv_action_res_t fsel_folder_action(lv_obj_t * folder, lv_dispi_t * dispi)
|
||||
*/
|
||||
static lv_action_res_t fsel_folder_lpr_action(lv_obj_t * folder, lv_dispi_t * dispi)
|
||||
{
|
||||
sprintf(fsel_path, "%s/%s", fsel_path, lv_list_element_get_txt(folder));
|
||||
sprintf(fsel_path, "%s/%s", fsel_path, lv_list_get_element_text(folder));
|
||||
|
||||
if(fsel_ok_action != NULL) {
|
||||
fsel_ok_action(fsel_param, fsel_path);
|
||||
@@ -363,7 +369,7 @@ static lv_action_res_t fsel_folder_lpr_action(lv_obj_t * folder, lv_dispi_t * di
|
||||
*/
|
||||
static lv_action_res_t fsel_file_action(lv_obj_t * file, lv_dispi_t * dispi)
|
||||
{
|
||||
sprintf(fsel_path, "%s/%s", fsel_path, lv_list_element_get_txt(file));
|
||||
sprintf(fsel_path, "%s/%s", fsel_path, lv_list_get_element_text(file));
|
||||
|
||||
if(fsel_ok_action != NULL) {
|
||||
fsel_ok_action(fsel_param, fsel_path);
|
||||
|
||||
@@ -35,7 +35,7 @@ void lv_app_fsel_init(void);
|
||||
* @param filter show only files with a specific extension, e.g. "wav".
|
||||
* "/" means filter to folders.
|
||||
* @param param a free parameter which will be added to 'ok_action'
|
||||
* @param ok_action an action to call when a file or folder is chosen
|
||||
* @param ok_action an action to call when a file or folder is chosen (give 'param' and the path as parameters)
|
||||
*/
|
||||
void lv_app_fsel_open(const char * path, const char * filter, void * param,
|
||||
void (*ok_action)(void *, const char *));
|
||||
|
||||
@@ -63,6 +63,7 @@ static cord_t kb_ta_ori_size;
|
||||
static uint8_t kb_mode;
|
||||
static void (*kb_close_action)(lv_obj_t *);
|
||||
static void (*kb_ok_action)(lv_obj_t *);
|
||||
static lv_style_t style_bg;
|
||||
static lv_style_t style_btn_rel;
|
||||
static lv_style_t style_btn_pr;
|
||||
/**********************
|
||||
@@ -78,8 +79,16 @@ static lv_style_t style_btn_pr;
|
||||
*/
|
||||
void lv_app_kb_init(void)
|
||||
{
|
||||
lv_style_get(LV_STYLE_PLAIN, &style_bg);
|
||||
style_bg.hpad = 0;
|
||||
style_bg.vpad = 0;
|
||||
style_bg.opad = 0;
|
||||
lv_style_get(LV_STYLE_BTN_REL, &style_btn_rel);
|
||||
style_btn_rel.radius = 0;
|
||||
style_btn_rel.bwidth = 1 * LV_DOWNSCALE;
|
||||
lv_style_get(LV_STYLE_BTN_PR, &style_btn_pr);
|
||||
style_btn_pr.radius = 0;
|
||||
style_btn_pr.bwidth = 1 * LV_DOWNSCALE;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -104,6 +113,7 @@ void lv_app_kb_open(lv_obj_t * ta, lv_app_kb_mode_t mode, void (*close)(lv_obj_t
|
||||
|
||||
/*Create a button matrix for the keyboard */
|
||||
kb_btnm = lv_btnm_create(lv_scr_act(), NULL);
|
||||
lv_obj_set_style(kb_btnm, &style_bg);
|
||||
lv_obj_set_size(kb_btnm, LV_HOR_RES, LV_VER_RES / 2);
|
||||
lv_obj_align(kb_btnm, NULL, LV_ALIGN_IN_BOTTOM_MID, 0, 0);
|
||||
lv_btnm_set_action(kb_btnm, lv_app_kb_action);
|
||||
@@ -119,25 +129,29 @@ void lv_app_kb_open(lv_obj_t * ta, lv_app_kb_mode_t mode, void (*close)(lv_obj_t
|
||||
}
|
||||
lv_btnm_set_styles_btn(kb_btnm, &style_btn_rel, &style_btn_pr);
|
||||
|
||||
/*Reduce the size of the window and align it to the top*/
|
||||
kb_win = lv_app_win_get_from_obj(kb_ta);
|
||||
lv_obj_set_height(kb_win, LV_VER_RES / 2);
|
||||
lv_obj_set_y(kb_win, 0);
|
||||
kb_win = NULL;
|
||||
kb_ta_ori_size = 0;
|
||||
if(mode & LV_APP_KB_MODE_WIN_RESIZE) {
|
||||
/*Reduce the size of the window and align it to the top*/
|
||||
kb_win = lv_app_win_get_from_obj(kb_ta);
|
||||
lv_obj_set_height(kb_win, LV_VER_RES / 2);
|
||||
lv_obj_set_y(kb_win, 0);
|
||||
|
||||
/*If the text area is higher then the new size of the window reduce its size too*/
|
||||
cord_t win_h = lv_obj_get_height(kb_win);
|
||||
kb_ta_ori_size = lv_obj_get_height(kb_ta);
|
||||
if(lv_obj_get_height(kb_ta) > win_h) {
|
||||
lv_obj_set_height(kb_ta, win_h);
|
||||
/*If the text area is higher then the new size of the window reduce its size too*/
|
||||
cord_t cont_h = lv_obj_get_height(kb_win) - lv_obj_get_height(lv_win_get_header(kb_win));
|
||||
kb_ta_ori_size = lv_obj_get_height(kb_ta);
|
||||
if(lv_obj_get_height(kb_ta) > cont_h - LV_DPI / 10) {
|
||||
lv_obj_set_height(kb_ta, cont_h - LV_DPI / 10);
|
||||
}
|
||||
#if LV_APP_ANIM_LEVEL != 0
|
||||
lv_page_focus(lv_win_get_content(kb_win), kb_ta, true);
|
||||
#else
|
||||
lv_page_focus(lv_win_get_page(kb_win), kb_ta, false);
|
||||
#endif
|
||||
}
|
||||
|
||||
lv_ta_set_cursor_pos(kb_ta, LV_TA_CUR_LAST);
|
||||
|
||||
#if LV_APP_ANIM_LEVEL != 0
|
||||
lv_page_focus(lv_win_get_content(kb_win), kb_ta, true);
|
||||
#else
|
||||
lv_page_focus(lv_win_get_page(kb_win), kb_ta, false);
|
||||
#endif
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -155,11 +169,11 @@ void lv_app_kb_close(bool ok)
|
||||
}
|
||||
|
||||
/*Reset the modified sizes*/
|
||||
|
||||
lv_obj_set_height(kb_ta, kb_ta_ori_size);
|
||||
|
||||
lv_obj_set_size(kb_win, LV_HOR_RES, LV_VER_RES);
|
||||
kb_win = NULL;
|
||||
if((kb_mode & LV_APP_KB_MODE_WIN_RESIZE) && kb_win != NULL) {
|
||||
lv_obj_set_height(kb_ta, kb_ta_ori_size);
|
||||
lv_obj_set_size(kb_win, LV_HOR_RES, LV_VER_RES);
|
||||
kb_win = NULL;
|
||||
}
|
||||
|
||||
lv_obj_del(kb_btnm);
|
||||
kb_btnm = NULL;
|
||||
@@ -229,11 +243,13 @@ static lv_action_res_t lv_app_kb_action(lv_obj_t * btnm, uint16_t i)
|
||||
lv_ta_add_text(kb_ta, txt);
|
||||
}
|
||||
|
||||
if(kb_mode & LV_APP_KB_MODE_WIN_RESIZE) {
|
||||
#if LV_APP_ANIM_LEVEL != 0
|
||||
lv_page_focus(lv_win_get_content(kb_win), kb_ta, true);
|
||||
lv_page_focus(lv_win_get_content(kb_win), kb_ta, true);
|
||||
#else
|
||||
lv_page_focus(lv_win_get_page(kb_win), kb_ta, false);
|
||||
lv_page_focus(lv_win_get_page(kb_win), kb_ta, false);
|
||||
#endif
|
||||
}
|
||||
return LV_ACTION_RES_OK;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ typedef enum
|
||||
{
|
||||
LV_APP_KB_MODE_TXT = 0x01,
|
||||
LV_APP_KB_MODE_NUM = 0x02,
|
||||
LV_APP_KB_MODE_WIN_RESIZE = 0x04,
|
||||
}lv_app_kb_mode_t;
|
||||
|
||||
/**********************
|
||||
|
||||
Reference in New Issue
Block a user