From 6bde942abe50753ed67554d7524a43281ade8433 Mon Sep 17 00:00:00 2001 From: Gabor Date: Tue, 10 Jan 2017 16:09:06 +0100 Subject: [PATCH] lv_app_notice: build notices from lv_mbox --- lv_app/lv_app.c | 6 +- lv_app/lv_app_util/lv_app_notice.c | 96 ++++-------------------------- lv_app/lv_app_util/lv_app_notice.h | 2 +- lv_appx/lv_app_sysmon.c | 7 ++- lv_conf_temp.h | 8 ++- 5 files changed, 28 insertions(+), 91 deletions(-) diff --git a/lv_app/lv_app.c b/lv_app/lv_app.c index e1bc720a4..659ce8e8b 100644 --- a/lv_app/lv_app.c +++ b/lv_app/lv_app.c @@ -1021,9 +1021,9 @@ static void lv_app_init_style(void) app_style.sc_page_style.bg_rects.hpad = 0; app_style.sc_page_style.bg_rects.opad = 0; app_style.sc_page_style.scrl_rects.objs.transp = 1; - app_style.sc_page_style.scrl_rects.hpad = 20 * LV_DOWNSCALE; - app_style.sc_page_style.scrl_rects.vpad = 20 * LV_DOWNSCALE; - app_style.sc_page_style.scrl_rects.opad = 20 * LV_DOWNSCALE; + app_style.sc_page_style.scrl_rects.hpad = 10 * LV_DOWNSCALE; + app_style.sc_page_style.scrl_rects.vpad = 10 * LV_DOWNSCALE; + app_style.sc_page_style.scrl_rects.opad = 15 * LV_DOWNSCALE; /*Shortcut styles*/ lv_btns_get(LV_BTNS_DEF,&app_style.sc_style); diff --git a/lv_app/lv_app_util/lv_app_notice.c b/lv_app/lv_app_util/lv_app_notice.c index 01d818163..a60487752 100644 --- a/lv_app/lv_app_util/lv_app_notice.c +++ b/lv_app/lv_app_util/lv_app_notice.c @@ -26,16 +26,12 @@ /********************** * STATIC PROTOTYPES **********************/ -static lv_action_res_t notice_rel_action(lv_obj_t * n, lv_dispi_t * dispi); /********************** * STATIC VARIABLES **********************/ static lv_obj_t * notice_h; -static lv_btns_t notice_btns; -static lv_labels_t notice_labels; - /********************** * MACROS **********************/ @@ -50,22 +46,6 @@ void lv_app_notice_init(void) { lv_app_style_t * app_style = lv_app_style_get(); - memcpy(¬ice_btns, &app_style->menu_style, sizeof(lv_rects_t)); - notice_btns.rects.round = 5 * LV_DOWNSCALE; - notice_btns.bcolor[LV_BTN_STATE_REL] = COLOR_WHITE; - notice_btns.mcolor[LV_BTN_STATE_REL] = COLOR_BLACK; - notice_btns.gcolor[LV_BTN_STATE_REL] = COLOR_BLACK; - notice_btns.bcolor[LV_BTN_STATE_PR] = COLOR_WHITE; - notice_btns.mcolor[LV_BTN_STATE_PR] = COLOR_GRAY; - notice_btns.gcolor[LV_BTN_STATE_PR] = COLOR_GRAY; - notice_btns.rects.bwidth = 1 * LV_DOWNSCALE; - notice_btns.rects.bopa = 90; - notice_btns.rects.light = 5 * LV_DOWNSCALE; - - memcpy(¬ice_labels, &app_style->menu_btn_label_style, sizeof(lv_labels_t)); - notice_labels.mid = 0; - notice_labels.font = LV_APP_FONT_MEDIUM; - notice_h = lv_rect_create(lv_scr_act(), NULL); lv_obj_set_size(notice_h, LV_HOR_RES, LV_VER_RES - app_style->menu_h); lv_obj_set_y(notice_h, app_style->menu_h); @@ -77,8 +57,9 @@ void lv_app_notice_init(void) /** * Add a notification with a given text * @param format pritntf-like format string + * @return pointer the notice which is a message box (lv_mbox) object */ -void lv_app_notice_add(const char * format, ...) +lv_obj_t * lv_app_notice_add(const char * format, ...) { char txt[LV_APP_NOTICE_MAX_LEN]; @@ -89,77 +70,24 @@ void lv_app_notice_add(const char * format, ...) lv_app_style_t * app_style = lv_app_style_get(); - lv_obj_t * n; - n = lv_btn_create(notice_h, NULL); - lv_rect_set_fit(n, true, true); - lv_obj_set_style(n, ¬ice_btns); - lv_obj_set_opa(n, app_style->menu_opa); - lv_btn_set_rel_action(n, notice_rel_action); - - lv_obj_t * l; - l = lv_label_create(n, NULL); - lv_label_set_text(l, txt); - lv_obj_set_style(l, ¬ice_labels); + lv_obj_t * mbox; + mbox = lv_mbox_create(notice_h, NULL); + lv_obj_set_style(mbox, lv_mboxs_get(LV_MBOXS_INFO, NULL)); + lv_mbox_set_title(mbox, ""); + lv_mbox_set_txt(mbox, txt); + lv_obj_set_opa(mbox, app_style->menu_opa); +#if LV_APP_NOTICE_SHOW_TIME != 0 + lv_mbox_auto_close(mbox, LV_APP_NOTICE_SHOW_TIME); +#endif lv_obj_set_parent(notice_h, lv_scr_act()); - lv_rect_set_fit(n, false, false); -#if LV_APP_EFFECT_ANIM != 0 && LV_APP_ANIM_NOTICE != 0 - anim_t a; - a.var = n; - a.path = anim_get_path(ANIM_PATH_LIN); - a.time = LV_APP_ANIM_NOTICE; - a.act_time = - LV_APP_NOTICE_SHOW_TIME; - a.playback = 0; - a.playback_pause = 0; - a.repeat = 0; - a.repeat_pause = 0; - a.end_cb = NULL; -#if LV_APP_EFFECT_OPA_ANIM != 0 - a.fp = (anim_fp_t) lv_obj_set_opar; - a.start = lv_obj_get_opa(n); - a.end = OPA_TRANSP; - anim_create(&a); - - /*Restore the label opacity because the opar anim changes it*/ - lv_obj_set_opa(l, OPA_COVER); - - a.act_time = - LV_APP_NOTICE_SHOW_TIME - LV_APP_ANIM_NOTICE; /*Do the next animation after the opa animation*/ -#endif - - a.fp = (anim_fp_t) lv_obj_set_height; - a.start = lv_obj_get_height(n); - a.end = 0; - a.end_cb = (anim_cb_t)lv_obj_del; - anim_create(&a); -#else - anim_t a; - a.var = n; - a.path = anim_get_path(ANIM_PATH_STEP); - a.time = LV_APP_ANIM_NOTICE; - a.act_time = - LV_APP_NOTICE_SHOW_TIME + LV_APP_ANIM_NOTICE; - a.playback = 0; - a.playback_pause = 0; - a.repeat = 0; - a.repeat_pause = 0; - a.fp = (anim_fp_t) lv_obj_set_height; - a.start = lv_obj_get_height(n); - a.end = lv_obj_get_height(n); - a.end_cb = lv_obj_del; - anim_create(&a); -#endif + return mbox; } /********************** * STATIC FUNCTIONS **********************/ -static lv_action_res_t notice_rel_action(lv_obj_t * n, lv_dispi_t * dispi) -{ - lv_obj_del(n); - - return LV_ACTION_RES_INV; -} - #endif diff --git a/lv_app/lv_app_util/lv_app_notice.h b/lv_app/lv_app_util/lv_app_notice.h index 4b122a192..8ece4189c 100644 --- a/lv_app/lv_app_util/lv_app_notice.h +++ b/lv_app/lv_app_util/lv_app_notice.h @@ -25,7 +25,7 @@ * GLOBAL PROTOTYPES **********************/ void lv_app_notice_init(void); -void lv_app_notice_add(const char * format, ...); +lv_obj_t * lv_app_notice_add(const char * format, ...); /********************** * MACROS diff --git a/lv_appx/lv_app_sysmon.c b/lv_appx/lv_app_sysmon.c index 0d9a581fa..63677c0a0 100644 --- a/lv_appx/lv_app_sysmon.c +++ b/lv_appx/lv_app_sysmon.c @@ -311,7 +311,8 @@ static void sysmon_task(void * param) static bool mem_warn_report = false; if(mem_mon.size_free < LV_APP_SYSMON_MEM_WARN && mem_warn_report == false) { mem_warn_report = true; - lv_app_notice_add("Critically low memory"); + lv_obj_t * not = lv_app_notice_add("Critically low memory"); + lv_obj_set_style(not, lv_mboxs_get(LV_MBOXS_WARN, NULL)); } if(mem_mon.size_free > LV_APP_SYSMON_MEM_WARN) mem_warn_report = false; @@ -320,7 +321,9 @@ static void sysmon_task(void * param) if(mem_mon.pct_frag > LV_APP_SYSMON_FRAG_WARN) { if(frag_warn_report == false) { frag_warn_report = true; - lv_app_notice_add("Critically memory fragmentation"); + lv_obj_t * not =lv_app_notice_add("Critical memory\nfragmentation"); + lv_obj_set_style(not, lv_mboxs_get(LV_MBOXS_WARN, NULL)); + dm_defrag(); /*Defrag. if the fragmentation is critical*/ } } diff --git a/lv_conf_temp.h b/lv_conf_temp.h index ceb00f110..835b53559 100644 --- a/lv_conf_temp.h +++ b/lv_conf_temp.h @@ -136,6 +136,12 @@ /*Message box (dependencies: lv_rect, lv_btn, lv_label)*/ #define USE_LV_MBOX 1 +/*Message box (dependencies: lv_rect, lv_btn, lv_label)*/ +#define USE_LV_MBOX 1 +#if USE_LV_MBOX != 0 +#define LV_MBOX_ANIM_TIME 250 /*How fast animate out the message box in auto close. 0: no animation [ms]*/ +#endif + /*================== * LV APP SETTINGS * =================*/ @@ -175,7 +181,7 @@ #define LV_APP_EFFECT_OPA_ANIM 1 /*Enable the using opacity in the application animations*/ #define LV_APP_ANIM_WIN 200 /*Animation time in milliseconds (0: turn off animation)*/ #define LV_APP_ANIM_SC 200 /*Animation time in milliseconds (0: turn off animation)*/ -#define LV_APP_ANIM_NOTICE 300 /*How fast animate out a notice [ms]*/ +#define LV_APP_ANIM_NOTICE 300 /*Obsolete, use LV_MBOX_ANIM. */ /* App. utility settings */ #define LV_APP_NOTICE_SHOW_TIME 4000 /*Notices will be shown for this time [ms]*/