acid-drop- Hacking the planet from a LilyGo T-Deck using custom firmware |
git clone git://git.acid.vegas/acid-drop.git |
Log | Files | Refs | Archive | README | LICENSE |
lv_example_msg_1.c (1556B)
1 #include "../../lv_examples.h" 2 #if LV_USE_MSG && LV_USE_SLIDER && LV_USE_LABEL && LV_BUILD_EXAMPLES 3 4 /*Define a message ID*/ 5 #define MSG_NEW_TEMPERATURE 1 6 7 static void slider_event_cb(lv_event_t * e); 8 static void label_event_cb(lv_event_t * e); 9 10 /** 11 * A slider sends a message on value change and a label display's that value 12 */ 13 void lv_example_msg_1(void) 14 { 15 /*Create a slider in the center of the display*/ 16 lv_obj_t * slider = lv_slider_create(lv_scr_act()); 17 lv_obj_center(slider); 18 lv_obj_add_event_cb(slider, slider_event_cb, LV_EVENT_VALUE_CHANGED, NULL); 19 20 /*Create a label below the slider*/ 21 lv_obj_t * label = lv_label_create(lv_scr_act()); 22 lv_obj_add_event_cb(label, label_event_cb, LV_EVENT_MSG_RECEIVED, NULL); 23 lv_label_set_text(label, "0%"); 24 lv_obj_align(label, LV_ALIGN_CENTER, 0, 30); 25 26 /*Subscribe the label to a message. Also use the user_data to set a format string here.*/ 27 lv_msg_subsribe_obj(MSG_NEW_TEMPERATURE, label, "%d °C"); 28 } 29 30 static void slider_event_cb(lv_event_t * e) 31 { 32 /*Notify all subscribers (only the label now) that the slider value has been changed*/ 33 lv_obj_t * slider = lv_event_get_target(e); 34 int32_t v = lv_slider_get_value(slider); 35 lv_msg_send(MSG_NEW_TEMPERATURE, &v); 36 } 37 38 static void label_event_cb(lv_event_t * e) 39 { 40 lv_obj_t * label = lv_event_get_target(e); 41 lv_msg_t * m = lv_event_get_msg(e); 42 43 const char * fmt = lv_msg_get_user_data(m); 44 const int32_t * v = lv_msg_get_payload(m); 45 46 lv_label_set_text_fmt(label, fmt, *v); 47 } 48 49 #endif