84 lines
3.3 KiB
C
84 lines
3.3 KiB
C
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);
|
|
}
|