static void weatherdata_obs_cb(lv_observer_t *observer, lv_subject_t *subject) { // Retrieve weatherdata struct meteodailyforecast_data *data = subject->value.pointer; //printffd(data); char buff[40] = {}; // sprintf(buff,"%s %.1f %.1f", data->previsions.desc, data->previsions.min, data->previsions.max); lv_obj_t *parent = (lv_obj_t *)(observer->target); lv_obj_t *datefld = lv_obj_get_child(parent, 0); lv_obj_t *desc_icon = lv_obj_get_child(parent, 1); lv_obj_t *temps = lv_obj_get_child(parent, 2); if (strcmp(data->previsions.icon, "p1j") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p1j); }else if (strcmp(data->previsions.icon, "p2j") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p2j); }else if (strcmp(data->previsions.icon, "p3j") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p3j); }else if (strcmp(data->previsions.icon, "p5bisj") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p5bisj); }else if (strcmp(data->previsions.icon, "p12j") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p12j); }else if (strcmp(data->previsions.icon, "p12bisj") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p12bisj); }else if (strcmp(data->previsions.icon, "p14j") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p14j); }else if (strcmp(data->previsions.icon, "p24j") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p24j); }else if (strcmp(data->previsions.icon, "p25j") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p25j); }else if (strcmp(data->previsions.icon, "p26j") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p26j); }else if (strcmp(data->previsions.icon, "p27j") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p27j); }else if (strcmp(data->previsions.icon, "p28j") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p28j); }else if (strcmp(data->previsions.icon, "p29j") == 0) { lv_image_set_src(lv_obj_get_child(desc_icon, 0), &p29j); }else{ ESP_LOGE(TAG, "Image %s non connue",data->previsions.icon); } char buffer[80]; dtToString(data->datetime,buffer); lv_label_set_text(datefld, buffer); lv_label_set_text(lv_obj_get_child(desc_icon, 1), data->previsions.desc); lv_label_set_text_fmt(lv_obj_get_child(temps, 0), "%.1f°C", data->previsions.max); lv_label_set_text_fmt(lv_obj_get_child(temps, 1), "%.1f°C", data->previsions.min); } struct weatherDay_fragment_t { /* IMPORTANT: don't miss this part */ lv_fragment_t base; /* States, object references and data fields for this fragment */ int dayNr; bool showTitle; const char *title; float minTemp; float maxTemp; }; static void weatherDay_fragment_ctor(lv_fragment_t *self, void * args) { int dayNo = ((int *)args)[0]; bool showDate = ((int*)args)[1]; ((struct weatherDay_fragment_t *)self)->dayNr = dayNo; ((struct weatherDay_fragment_t *)self)->showTitle = showDate; ESP_LOGI(TAG, "Fragment initialisé avec le jour n°%d - Afficher la date %d",dayNo, showDate); }