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