lv_action_t added independently from lv_btn, page rel/pr action added, lv_app_kb basics

This commit is contained in:
Kiss-Vamosi Gabor
2016-12-18 22:07:03 +01:00
parent a68901ce82
commit f259f6ca6d
22 changed files with 269 additions and 87 deletions

View File

@@ -231,7 +231,7 @@ void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state)
* @param btn pointer to a button object
* @param pr_action pointer to function
*/
void lv_btn_set_pr_action(lv_obj_t * btn, lv_btn_action_t pr_action)
void lv_btn_set_pr_action(lv_obj_t * btn, lv_action_t pr_action)
{
lv_btn_ext_t * ext = lv_obj_get_ext(btn);
@@ -243,7 +243,7 @@ void lv_btn_set_pr_action(lv_obj_t * btn, lv_btn_action_t pr_action)
* @param btn pointer to a button object
* @param rel_action pointer to functionREL
*/
void lv_btn_set_rel_action(lv_obj_t * btn, lv_btn_action_t rel_action)
void lv_btn_set_rel_action(lv_obj_t * btn, lv_action_t rel_action)
{
lv_btn_ext_t * btn_p = lv_obj_get_ext(btn);
@@ -255,7 +255,7 @@ void lv_btn_set_rel_action(lv_obj_t * btn, lv_btn_action_t rel_action)
* @param btn pointer to a button object
* @param lpr_action pointer to function
*/
void lv_btn_set_lpr_action(lv_obj_t * btn, lv_btn_action_t lpr_action)
void lv_btn_set_lpr_action(lv_obj_t * btn, lv_action_t lpr_action)
{
lv_btn_ext_t * ext = lv_obj_get_ext(btn);
@@ -267,7 +267,7 @@ void lv_btn_set_lpr_action(lv_obj_t * btn, lv_btn_action_t lpr_action)
* @param btn pointer to a button object
* @param lpr_rep_action pointer to function
*/
void lv_btn_set_lpr_rep_action(lv_obj_t * btn, lv_btn_action_t lpr_rep_action)
void lv_btn_set_lpr_rep_action(lv_obj_t * btn, lv_action_t lpr_rep_action)
{
lv_btn_ext_t * ext = lv_obj_get_ext(btn);

View File

@@ -33,14 +33,6 @@ typedef enum
LV_BTN_STATE_NUM,
}lv_btn_state_t;
typedef enum
{
LV_ACTION_RES_OK = 0,
LV_ACTION_RES_INV = 0,
}lv_action_res_t;
typedef lv_action_res_t (*lv_btn_action_t) (lv_obj_t*, lv_dispi_t *);
typedef struct
{
uint8_t light_en :1;
@@ -73,10 +65,10 @@ typedef struct
{
lv_rect_ext_t rect_ext; /*Ext. of ancestor*/
/*New data for this type */
lv_btn_action_t pr_action;
lv_btn_action_t rel_action;
lv_btn_action_t lpr_action;
lv_btn_action_t lpr_rep_action;
lv_action_t pr_action;
lv_action_t rel_action;
lv_action_t lpr_action;
lv_action_t lpr_rep_action;
lv_btn_state_t state;
uint8_t tgl :1; /*1: Toggle enabled*/
@@ -94,10 +86,10 @@ lv_btns_t * lv_btns_get(lv_btns_builtin_t style, lv_btns_t * copy);
void lv_btn_set_tgl(lv_obj_t * btn, bool tgl);
void lv_btn_set_state(lv_obj_t * btn, lv_btn_state_t state);
void lv_btn_set_pr_action(lv_obj_t * btn, lv_btn_action_t pr_action);
void lv_btn_set_rel_action(lv_obj_t * btn, lv_btn_action_t rel_action);
void lv_btn_set_lpr_action(lv_obj_t * btn, lv_btn_action_t lpr_action);
void lv_btn_set_lpr_rep_action(lv_obj_t * btn, lv_btn_action_t lpr_rep_action);
void lv_btn_set_pr_action(lv_obj_t * btn, lv_action_t pr_action);
void lv_btn_set_rel_action(lv_obj_t * btn, lv_action_t rel_action);
void lv_btn_set_lpr_action(lv_obj_t * btn, lv_action_t lpr_action);
void lv_btn_set_lpr_rep_action(lv_obj_t * btn, lv_action_t lpr_rep_action);
bool lv_btn_get_tgl(lv_obj_t * btn);
lv_btn_state_t lv_btn_get_state(lv_obj_t * btn);

View File

@@ -28,7 +28,7 @@ static bool lv_btnm_design(lv_obj_t * btnm, const area_t * mask, lv_design_mode_
#endif
static uint8_t lv_btnm_get_width_unit(const char * btn_str);
static void lv_btnm_create_btns(lv_obj_t * btnm, const char ** map);
static bool lv_btnm_btn_release_action(lv_obj_t * btnm, lv_dispi_t * dispi);
static lv_action_res_t lv_btnm_btn_release_action(lv_obj_t * btnm, lv_dispi_t * dispi);
static void lv_btnms_init(void);
/**********************
@@ -131,6 +131,7 @@ bool lv_btnm_signal(lv_obj_t * btnm, lv_signal_t sign, void * param)
* Use octal numbers (e.g. "\003") to set the relative
* width of a button. (max. 9 -> \011)
* (e.g. const char * str[] = {"a", "b", "\n", "\004c", "d", ""}).
* The button do not copy the array so it can not be a local variable.
*/
void lv_btnm_set_map(lv_obj_t * btnm, const char ** map)
{
@@ -379,12 +380,12 @@ static uint8_t lv_btnm_get_width_unit(const char * btn_str)
* @param dispi pointer to the caller display input.
* @return true: if the button remains valid (the button matrix or the button is not deleted)
*/
static bool lv_btnm_btn_release_action(lv_obj_t * btn, lv_dispi_t * dispi)
static lv_action_res_t lv_btnm_btn_release_action(lv_obj_t * btn, lv_dispi_t * dispi)
{
lv_obj_t * btnm = lv_obj_get_parent(btn);
lv_btnm_ext_t * ext = lv_obj_get_ext(btnm);
uint8_t id = lv_obj_get_free_num(btn);
bool ret;
lv_action_res_t ret;
if(ext->cb != NULL) {
ret = ext->cb(btnm, btn, id); /*Call the set callback function*/
}

View File

@@ -71,6 +71,6 @@ lv_btnm_callback_t lv_btnm_get_cb(lv_obj_t * btnm);
* MACROS
**********************/
#endif
#endif /*USE_LV_BTNM*/
#endif
#endif /*LV_BTNM_H*/

View File

@@ -110,7 +110,7 @@ bool lv_list_signal(lv_obj_t * list, lv_signal_t sign, void * param)
* @param rel_action pointer to release action function (like with lv_btn)
* @return pointer to the new list element which can be customized (a button)
*/
lv_obj_t * lv_list_add(lv_obj_t * list, const char * img_fn, const char * txt, lv_btn_action_t rel_action)
lv_obj_t * lv_list_add(lv_obj_t * list, const char * img_fn, const char * txt, lv_action_t rel_action)
{
lv_lists_t * lists = lv_obj_get_style(list);
lv_list_ext_t * ext = lv_obj_get_ext(list);

View File

@@ -65,7 +65,7 @@ typedef struct
**********************/
lv_obj_t * lv_list_create(lv_obj_t * par, lv_obj_t * copy);
bool lv_list_signal(lv_obj_t * list, lv_signal_t sign, void * param);
lv_obj_t * lv_list_add(lv_obj_t * list, const char * img_fn, const char * txt, lv_btn_action_t rel_action);
lv_obj_t * lv_list_add(lv_obj_t * list, const char * img_fn, const char * txt, lv_action_t rel_action);
lv_lists_t * lv_lists_get(lv_lists_builtin_t style, lv_lists_t * copy);
void lv_list_down(lv_obj_t * list);

View File

@@ -91,6 +91,7 @@ lv_obj_t * lv_mbox_create(lv_obj_t * par, lv_obj_t * copy)
/*Copy an existing message box*/
else {
lv_mbox_ext_t * copy_ext = lv_obj_get_ext(copy);
/*TODO*/
}
return new_mbox;
@@ -173,7 +174,7 @@ bool lv_mbox_signal(lv_obj_t * mbox, lv_signal_t sign, void * param)
* @param rel_action a function which will be called when the button is relesed
* @return pointer to the created button (lv_btn)
*/
lv_obj_t * lv_mbox_add_btn(lv_obj_t * mbox, const char * btn_txt, lv_btn_action_t rel_action)
lv_obj_t * lv_mbox_add_btn(lv_obj_t * mbox, const char * btn_txt, lv_action_t rel_action)
{
lv_mbox_ext_t * ext = lv_obj_get_ext(mbox);
lv_mboxs_t * style = lv_obj_get_style(mbox);

View File

@@ -68,7 +68,7 @@ lv_obj_t * lv_mbox_create(lv_obj_t * par, lv_obj_t * copy);
bool lv_mbox_signal(lv_obj_t * mbox, lv_signal_t sign, void * param);
lv_mboxs_t * lv_mboxs_get(lv_mboxs_builtin_t style, lv_mboxs_t * copy);
lv_obj_t * lv_mbox_add_btn(lv_obj_t * mbox, const char * btn_txt, lv_btn_action_t rel_action);
lv_obj_t * lv_mbox_add_btn(lv_obj_t * mbox, const char * btn_txt, lv_action_t rel_action);
bool lv_mbox_close_action (lv_obj_t * mbox, lv_dispi_t *dispi);
void lv_mbox_auto_close(lv_obj_t * mbox, uint16_t tout);
void lv_mbox_set_title(lv_obj_t * mbox, const char * title);

View File

@@ -264,6 +264,18 @@ static bool lv_scrolling_signal(lv_obj_t * scrolling, lv_signal_t sign, void* pa
lv_inv_area(&page_ext->sbv);
}
break;
case LV_SIGNAL_PRESSED:
if(page_ext->pr_action != NULL) {
page_ext->pr_action(page, param);
}
break;
case LV_SIGNAL_RELEASED:
if(lv_dispi_is_dragging(param) == false) {
if(page_ext->rel_action != NULL) {
page_ext->rel_action(page, param);
}
}
break;
default:
break;
@@ -277,6 +289,29 @@ static bool lv_scrolling_signal(lv_obj_t * scrolling, lv_signal_t sign, void* pa
* Setter functions
*====================*/
/**
* Set a release action for the page
* @param page pointer to a page object
* @param rel_action a function to call when the page is released
*/
void lv_page_set_rel_action(lv_obj_t * page, lv_action_t rel_action)
{
lv_page_ext_t * ext = lv_obj_get_ext(page);
ext->rel_action = rel_action;
}
/**
* Set a press action for the page
* @param page pointer to a page object
* @param pr_action a function to call when the page is pressed
*/
void lv_page_set_pr_action(lv_obj_t * page, lv_action_t pr_action)
{
lv_page_ext_t * ext = lv_obj_get_ext(page);
ext->pr_action = pr_action;
}
/**
* Glue the object to the page. After it the page can be moved (dragged) with this object too.
* @param obj pointer to an object on a page
@@ -309,17 +344,17 @@ void lv_page_focus(lv_obj_t * page, lv_obj_t * obj, bool anim_en)
/*Out of the page on the top*/
if(scrlable_y + obj_y < 0) {
/*Calculate a new position try to align to the middle*/
/*Calculate a new position and to let scrable_rects.vpad space above*/
scrlable_y = -(obj_y - style->scrable_rects.vpad - style->bg_rects.vpad);
scrlable_y += page_h / 2 - obj_h / 2;
scrlable_y += style->scrable_rects.vpad;
refr = true;
}
/*Out of the page on the bottom*/
else if(scrlable_y + obj_y + obj_h > page_h) {
/*Calculate a new position try to align to the middle*/
/*Calculate a new position and to let scrable_rects.vpad space below*/
scrlable_y = -obj_y;
scrlable_y += page_h - obj_h;
scrlable_y -= page_h / 2 - obj_h / 2;
scrlable_y -= style->scrable_rects.vpad;
refr = true;
}

View File

@@ -54,6 +54,8 @@ typedef struct
lv_rect_ext_t rect_ext; /*Ext. of ancestor*/
/*New data for this type */
lv_obj_t * scrolling; /*The scrollable object on the background*/
lv_action_t rel_action;
lv_action_t pr_action;
area_t sbh; /*Horizontal scrollbar*/
area_t sbv; /*Vertical scrollbar*/
uint8_t sbh_draw :1; /*1: horizontal scrollbar is visible now*/
@@ -70,6 +72,8 @@ lv_obj_t * lv_page_create(lv_obj_t * par, lv_obj_t * copy);
lv_pages_t * lv_pages_get(lv_pages_builtin_t style, lv_pages_t * copy);
bool lv_page_signal(lv_obj_t * page, lv_signal_t sign, void * param);
void lv_page_set_rel_action(lv_obj_t * page, lv_action_t rel_action);
void lv_page_set_pr_action(lv_obj_t * page, lv_action_t pr_action);
void lv_page_glue_obj(lv_obj_t * page, bool glue);
void lv_page_focus(lv_obj_t * page, lv_obj_t * obj, bool anim_en);
lv_obj_t * lv_page_get_scrable(lv_obj_t * page);

View File

@@ -17,10 +17,6 @@
/*********************
* DEFINES
*********************/
#define LV_TA_MAX_LENGTH 512
#define LV_TA_DEF_WIDTH 120
#define LV_TA_DEF_HEIGHT 80
#define LV_TA_CUR_BLINK_TIME 400 /*ms*/
/**********************
* TYPEDEFS
@@ -93,7 +89,7 @@ lv_obj_t * lv_ta_create(lv_obj_t * par, lv_obj_t * copy)
lv_label_set_long_mode(ext->label, LV_LABEL_LONG_BREAK);
lv_label_set_text(ext->label, "Text area");
lv_page_glue_obj(ext->label, true);
lv_obj_set_click(ext->label, true);
lv_obj_set_click(ext->label, false);
lv_obj_set_style(new_ta, lv_tas_get(LV_TAS_DEF, NULL));
lv_obj_set_size_us(new_ta, LV_TA_DEF_WIDTH, LV_TA_DEF_HEIGHT);
}
@@ -115,6 +111,8 @@ lv_obj_t * lv_ta_create(lv_obj_t * par, lv_obj_t * copy)
a.time = LV_TA_CUR_BLINK_TIME;
a.act_time = 0;
a.end_cb = NULL;
a.start = 0;
a.end= 1;
a.repeat = 1;
a.repeat_pause = 0;
a.playback = 1;
@@ -230,7 +228,7 @@ void lv_ta_add_text(lv_obj_t * ta, const char * txt)
}
/**
* Set the text os a text area
* Set the text of a text area
* @param ta pointer to a text area
* @param txt pointer to the text
*/
@@ -539,10 +537,10 @@ static bool lv_ta_scrling_design(lv_obj_t * scrling, const area_t * mask, lv_des
static void lv_ta_hide_cursor(lv_obj_t * ta, uint8_t hide)
{
lv_ta_ext_t * ta_ext = lv_obj_get_ext(ta);
ta_ext->cur_hide = hide == 0 ? 0 : 1;
lv_obj_inv(ta);
if(hide != ta_ext->cur_hide) {
ta_ext->cur_hide = hide == 0 ? 0 : 1;
lv_obj_inv(ta);
}
}
/**

View File

@@ -64,6 +64,7 @@ void lv_ta_add_char(lv_obj_t * ta, char c);
void lv_ta_add_text(lv_obj_t * ta, const char * txt);
void lv_ta_set_text(lv_obj_t * ta, const char * txt);
void lv_ta_del(lv_obj_t * ta);
void lv_ta_set_cursor_pos(lv_obj_t * ta, int16_t pos);
void lv_ta_cursor_right (lv_obj_t * ta);
void lv_ta_cursor_left(lv_obj_t * taj);

View File

@@ -212,7 +212,7 @@ bool lv_win_signal(lv_obj_t * win, lv_signal_t sign, void * param)
* @param rel_action a function pointer to call when the button is released
* @return pointer to the created button object
*/
lv_obj_t * lv_win_add_ctrl_btn(lv_obj_t * win, const char * img_path, lv_btn_action_t rel_action)
lv_obj_t * lv_win_add_ctrl_btn(lv_obj_t * win, const char * img_path, lv_action_t rel_action)
{
lv_win_ext_t * ext = lv_obj_get_ext(win);
lv_wins_t * style = lv_obj_get_style(win);
@@ -282,6 +282,18 @@ const char * lv_win_get_title(lv_obj_t * win)
return lv_label_get_text(ext->title);
}
/**
* Get the content object (lv_page type) of a window
* @param win pointer to a window object
* @return pointer to the content page object of a window
*/
lv_obj_t * lv_win_get_content(lv_obj_t * win)
{
lv_win_ext_t * ext = lv_obj_get_ext(win);
return ext->content;
}
/**
* Get the pointer of a widow from one of its control button.
* It is useful in the action of the control buttons where only button is known.

View File

@@ -71,11 +71,12 @@ lv_obj_t * lv_win_create(lv_obj_t * par, lv_obj_t * copy);
bool lv_win_signal(lv_obj_t * win, lv_signal_t sign, void * param);
lv_wins_t * lv_wins_get(lv_wins_builtin_t style, lv_wins_t * copy);
lv_obj_t * lv_win_add_ctrl_btn(lv_obj_t * win, const char * img, lv_btn_action_t rel_action);
lv_obj_t * lv_win_add_ctrl_btn(lv_obj_t * win, const char * img, lv_action_t rel_action);
bool lv_win_close_action(lv_obj_t * btn, lv_dispi_t * dispi);
void lv_win_set_title(lv_obj_t * win, const char * title);
const char * lv_win_get_title(lv_obj_t * win);
lv_obj_t * lv_win_get_content(lv_obj_t * win);
lv_obj_t * lv_win_get_from_ctrl_btn(lv_obj_t * ctrl_btn);
/**********************
* MACROS