diff --git a/demos/lv_demos.h b/demos/lv_demos.h index 2c5a8d311..2d23e166f 100644 --- a/demos/lv_demos.h +++ b/demos/lv_demos.h @@ -43,6 +43,10 @@ extern "C" { #include "transform/lv_demo_transform.h" #endif +#if LV_USE_DEMO_SCROLL +#include "scroll/lv_demo_scroll.h" +#endif + /********************* * DEFINES *********************/ diff --git a/demos/scroll/lv_demo_scroll.c b/demos/scroll/lv_demo_scroll.c new file mode 100644 index 000000000..18155e7d1 --- /dev/null +++ b/demos/scroll/lv_demo_scroll.c @@ -0,0 +1,113 @@ +/** + * @file lv_demo_scroll.c + */ + +/********************* + * INCLUDES + *********************/ +#include "lv_demo_scroll.h" + +#if LV_USE_DEMO_SCROLL + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ + +/********************** + * STATIC PROTOTYPES + **********************/ +static lv_obj_t * switch_create(lv_obj_t * parent, const char * title, lv_obj_flag_t flag, bool en); +static void generic_swicth_event_cb(lv_event_t * e); + +/********************** + * STATIC VARIABLES + **********************/ +static lv_obj_t * list; + +/********************** + * MACROS + **********************/ + +/********************** + * GLOBAL FUNCTIONS + **********************/ +void lv_demo_scroll(void) +{ + lv_obj_t * panel = lv_obj_create(lv_scr_act()); + lv_obj_set_style_shadow_width(panel, 16, 0); + lv_obj_set_style_shadow_ofs_y(panel, 8, 0); + lv_obj_set_style_shadow_ofs_x(panel, 4, 0); + lv_obj_set_style_shadow_opa(panel, LV_OPA_40, 0); + + lv_obj_set_size(panel, lv_pct(70), lv_pct(90)); + lv_obj_center(panel); + lv_obj_set_flex_flow(panel, LV_FLEX_FLOW_COLUMN); + lv_obj_set_flex_align(panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER); + + list = lv_list_create(panel); + lv_list_add_btn(list, LV_SYMBOL_IMAGE, "Image1.png"); + lv_list_add_btn(list, LV_SYMBOL_IMAGE, "Image2.png"); + lv_list_add_btn(list, LV_SYMBOL_IMAGE, "Image3.png"); + lv_list_add_btn(list, LV_SYMBOL_IMAGE, "Image4.png"); + lv_list_add_btn(list, LV_SYMBOL_IMAGE, "Image5.png"); + lv_list_add_btn(list, LV_SYMBOL_IMAGE, "Image6.png"); + lv_list_add_btn(list, LV_SYMBOL_IMAGE, "Image7.png"); + lv_list_add_btn(list, LV_SYMBOL_IMAGE, "Image8.png"); + lv_list_add_btn(list, LV_SYMBOL_IMAGE, "Image9.png"); + lv_list_add_btn(list, LV_SYMBOL_IMAGE, "Image10.png"); + + switch_create(panel, "Scrollable", LV_OBJ_FLAG_SCROLLABLE, true); + switch_create(panel, "Scroll chain", LV_OBJ_FLAG_SCROLL_CHAIN, true); + switch_create(panel, "Elastic scroll", LV_OBJ_FLAG_SCROLL_ELASTIC, true); + switch_create(panel, "Add scroll momentum", LV_OBJ_FLAG_SCROLL_MOMENTUM, true); + + + /*Show the switches first*/ + lv_obj_move_foreground(list); + +} + +/********************** + * STATIC FUNCTIONS + **********************/ + +static lv_obj_t * switch_create(lv_obj_t * parent, const char * title, lv_obj_flag_t flag, bool en) +{ + lv_obj_t * cont = lv_obj_create(parent); + lv_obj_remove_style_all(cont); + lv_obj_set_size(cont, lv_pct(100), LV_SIZE_CONTENT); + lv_obj_set_flex_flow(cont, LV_FLEX_FLOW_ROW); + lv_obj_set_flex_align(cont, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_START); + + lv_obj_t * label = lv_label_create(cont); + lv_label_set_text(label, title); + lv_obj_set_flex_grow(label, 1); + + lv_obj_t * sw = lv_switch_create(cont); + lv_obj_add_event(sw, generic_swicth_event_cb, LV_EVENT_VALUE_CHANGED, (void *)((lv_uintptr_t) flag)); + if(en) { + lv_obj_add_state(sw, LV_STATE_CHECKED); + lv_obj_add_flag(list, flag); + } + else { + lv_obj_clear_state(sw, LV_STATE_CHECKED); + lv_obj_clear_flag(list, flag); + } + + return cont; +} + +static void generic_swicth_event_cb(lv_event_t * e) +{ + lv_obj_t * sw = lv_event_get_target(e); + lv_obj_flag_t flag = (lv_obj_flag_t)((lv_uintptr_t)lv_event_get_user_data(e)); + + if(lv_obj_has_state(sw, LV_STATE_CHECKED)) lv_obj_add_flag(list, flag); + else lv_obj_clear_flag(list, flag); +} + +#endif diff --git a/demos/scroll/lv_demo_scroll.h b/demos/scroll/lv_demo_scroll.h new file mode 100644 index 000000000..f6010191c --- /dev/null +++ b/demos/scroll/lv_demo_scroll.h @@ -0,0 +1,39 @@ +/** + * @file lv_demo_scroll.h + * + */ + +#ifndef LV_DEMO_SCROLL_H +#define LV_DEMO_SCROLL_H + +#ifdef __cplusplus +extern "C" { +#endif + +/********************* + * INCLUDES + *********************/ +#include "../lv_demos.h" + +/********************* + * DEFINES + *********************/ + +/********************** + * TYPEDEFS + **********************/ + +/********************** + * GLOBAL PROTOTYPES + **********************/ +void lv_demo_scroll(void); + +/********************** + * MACROS + **********************/ + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif /*LV_DEMO_SCROLL_H*/ diff --git a/demos/transform/assets/img_transform_avatar_15.c b/demos/transform/assets/img_transform_avatar_15.c index 0a8840fde..119860f2a 100644 --- a/demos/transform/assets/img_transform_avatar_15.c +++ b/demos/transform/assets/img_transform_avatar_15.c @@ -106,7 +106,7 @@ img_transform_avatar_15_map[] = { }; const lv_img_dsc_t img_transform_avatar_15 = { - .header.cf = LV_COLOR_FORMAT_NATIVE_WITH_ALPHA, + .header.cf = LV_COLOR_FORMAT_ARGB8888, .header.always_zero = 0, .header.reserved = 0, .header.w = 80, diff --git a/lv_conf_template.h b/lv_conf_template.h index 65013d490..b9e894bc9 100644 --- a/lv_conf_template.h +++ b/lv_conf_template.h @@ -776,14 +776,16 @@ #endif /*Flex layout demo*/ -#define LV_USE_DEMO_FLEX_LAYOUT 0 +#define LV_USE_DEMO_FLEX_LAYOUT 0 /*Smart-phone like multi-language demo*/ -#define LV_USE_DEMO_MULTILANG 0 +#define LV_USE_DEMO_MULTILANG 0 /*Widget transformation demo*/ #define LV_USE_DEMO_TRANSFORM 0 +/*Demonstrate scroll settings*/ +#define LV_USE_DEMO_SCROLL 0 /*--END OF LV_CONF_H--*/ #endif /*LV_CONF_H*/ diff --git a/src/lv_conf_internal.h b/src/lv_conf_internal.h index 25a63ac73..619858e56 100644 --- a/src/lv_conf_internal.h +++ b/src/lv_conf_internal.h @@ -2512,7 +2512,7 @@ #ifdef CONFIG_LV_USE_DEMO_FLEX_LAYOUT #define LV_USE_DEMO_FLEX_LAYOUT CONFIG_LV_USE_DEMO_FLEX_LAYOUT #else - #define LV_USE_DEMO_FLEX_LAYOUT 0 + #define LV_USE_DEMO_FLEX_LAYOUT 0 #endif #endif @@ -2521,7 +2521,7 @@ #ifdef CONFIG_LV_USE_DEMO_MULTILANG #define LV_USE_DEMO_MULTILANG CONFIG_LV_USE_DEMO_MULTILANG #else - #define LV_USE_DEMO_MULTILANG 0 + #define LV_USE_DEMO_MULTILANG 0 #endif #endif @@ -2534,6 +2534,14 @@ #endif #endif +/*Demonstrate scroll settings*/ +#ifndef LV_USE_DEMO_SCROLL + #ifdef CONFIG_LV_USE_DEMO_SCROLL + #define LV_USE_DEMO_SCROLL CONFIG_LV_USE_DEMO_SCROLL + #else + #define LV_USE_DEMO_SCROLL 0 + #endif +#endif /*---------------------------------- diff --git a/tests/src/lv_test_conf_full.h b/tests/src/lv_test_conf_full.h index cb5dc1e91..d8720be3c 100644 --- a/tests/src/lv_test_conf_full.h +++ b/tests/src/lv_test_conf_full.h @@ -78,5 +78,6 @@ #define LV_USE_DEMO_STRESS 1 #define LV_USE_DEMO_TRANSFORM 1 #define LV_USE_DEMO_MULTILANG 1 +#define LV_USE_DEMO_SCROLL 1