domotic/main/include/fmeteod.h
2025-03-26 11:26:53 +01:00

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);
}