noMoreFragment

This commit is contained in:
marc 2025-04-17 23:32:40 +02:00
parent ea11fa4eef
commit a0d0533181

View File

@ -312,35 +312,9 @@ void showMeteoIcon(const char *icon, lv_obj_t *desc_icon, int childNr)
lv_image_set_src(img, result); lv_image_set_src(img, result);
free(result); free(result);
} }
/* ------------------------------------------------------------ */
/* Fragment meteo journaliere (date,icone, min et max) */
/* ------------------------------------------------------------ */
// Structure meteo journaliere
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;
};
// Constructeur meteo journaliere
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);
}
// Ce fragment affiche une prévision journaliere (date,icone, min et max) // Ce fragment affiche une prévision journaliere (date,icone, min et max)
static lv_obj_t *weatherDay_fragment_create_obj(lv_fragment_t *self, lv_obj_t *parent) static lv_obj_t* weatherDay_fragment_create_obj(int dayNr, lv_obj_t *parent)
{ {
lv_obj_t *sup = lv_obj_create(parent); lv_obj_t *sup = lv_obj_create(parent);
@ -401,49 +375,13 @@ static lv_obj_t *weatherDay_fragment_create_obj(lv_fragment_t *self, lv_obj_t *p
lv_obj_set_style_text_color(min, lv_color_hex(0x3000FF), 0); lv_obj_set_style_text_color(min, lv_color_hex(0x3000FF), 0);
// On positionne un observer sur le subjet correspondant au jour du widget // On positionne un observer sur le subjet correspondant au jour du widget
lv_subject_add_observer_obj(tmpSubj[((struct weatherDay_fragment_t *)self)->dayNr], weatherdata_obs_cb, sup, NULL); lv_subject_add_observer_obj(tmpSubj[dayNr], weatherdata_obs_cb, sup, NULL);
return container; return container;
} }
// Fragment meteo journaliere
const lv_fragment_class_t meteoFragment = {
/* Initialize something needed */
.constructor_cb = weatherDay_fragment_ctor,
/* Create view objects */
.create_obj_cb = weatherDay_fragment_create_obj,
/* IMPORTANT: size of your fragment struct */
.instance_size = sizeof(struct weatherDay_fragment_t),
};
/* ------------------------------------------------------------ */
/* Fragment meteo horaire ("heure",icone, temp) */
/* ------------------------------------------------------------ */
// Structure meteo horaire
struct weatherH_fragment_t
{
/* IMPORTANT: don't miss this part */
lv_fragment_t base;
/* States, object references and data fields for this fragment */
int horaireNr;
bool showTitle;
const char *horaire;
float temp;
};
// Constructeur meteo horaire
static void weatherH_fragment_ctor(lv_fragment_t *self, void *args)
{
// Represente le n° (index dans le tableau) a afficher
int horaireNr = ((int *)args)[0];
bool showDate = ((int *)args)[1];
((struct weatherH_fragment_t *)self)->horaireNr = horaireNr;
((struct weatherH_fragment_t *)self)->showTitle = showDate;
ESP_LOGI(TAG, "Fragment initialisé avec l'horaire %d", horaireNr);
}
// Ce fragment affiche une prévision horaire (date,icone, temp moyenne) // Ce fragment affiche une prévision horaire (date,icone, temp moyenne)
static lv_obj_t *weatherH_fragment_create_obj(lv_fragment_t *self, lv_obj_t *parent) static lv_obj_t* weatherH_fragment_create_obj(int horaireNr, lv_obj_t *parent)
{ {
lv_obj_t *sup = lv_obj_create(parent); lv_obj_t *sup = lv_obj_create(parent);
@ -489,119 +427,12 @@ static lv_obj_t *weatherH_fragment_create_obj(lv_fragment_t *self, lv_obj_t *par
lv_obj_set_style_text_font(desc, lv_theme_get_font_normal(desc), 0); lv_obj_set_style_text_font(desc, lv_theme_get_font_normal(desc), 0);
// On positionne un observer sur le subjet correspondant a l'horaire du widget // On positionne un observer sur le subjet correspondant a l'horaire du widget
ESP_LOGE(TAG, "on positionne obs sur horaire %d", ((struct weatherH_fragment_t *)self)->horaireNr); ESP_LOGE(TAG, "on positionne obs sur horaire %d", horaireNr);
lv_subject_add_observer_obj(tmpHSubj[((struct weatherH_fragment_t *)self)->horaireNr], weatherdataH_obs_cb, sup, NULL); lv_subject_add_observer_obj(tmpHSubj[horaireNr], weatherdataH_obs_cb, sup, NULL);
return container; return container;
} }
// Fragment meteo horaire
const lv_fragment_class_t meteoHFragment = {
/* Initialize something needed */
.constructor_cb = weatherH_fragment_ctor,
/* Create view objects */
.create_obj_cb = weatherH_fragment_create_obj,
/* IMPORTANT: size of your fragment struct */
.instance_size = sizeof(struct weatherH_fragment_t),
};
/* -------------------------------------------------------------- */
/* Fragment 3 meteo "jour" (aujourd'hui, demain, apres demain) */
/* -------------------------------------------------------------- */
struct meteodailyforecast_fragment_t
{
/* IMPORTANT: don't miss this part */
lv_fragment_t base;
/* States, object references and data fields for this fragment */
const char *title;
bool showDate;
};
static void meteodailyforecast_fragment_ctor(lv_fragment_t *self, void *args)
{
struct meteodailyforecast_fragment_t *myself = ((struct meteodailyforecast_fragment_t *)self);
myself->showDate = args;
}
static lv_obj_t *meteodailyforecast_fragment_create_obj(lv_fragment_t *self, lv_obj_t *parent)
{
lv_fragment_manager_t *manager = lv_fragment_manager_create(NULL);
int args[2] = {0, ((struct meteodailyforecast_fragment_t *)self)->showDate};
lv_fragment_t *fragment = lv_fragment_create(&meteoFragment, args);
lv_fragment_manager_add(manager, fragment, &parent);
args[0] = 1;
fragment = lv_fragment_create(&meteoFragment, args);
lv_fragment_manager_add(manager, fragment, &parent);
args[0] = 2;
fragment = lv_fragment_create(&meteoFragment, args);
lv_fragment_manager_add(manager, fragment, &parent);
return parent;
}
const lv_fragment_class_t meteodailyforecast_cls = {
/* Initialize something needed */
.constructor_cb = meteodailyforecast_fragment_ctor,
/* Create view objects */
.create_obj_cb = meteodailyforecast_fragment_create_obj,
/* IMPORTANT: size of your fragment struct */
.instance_size = sizeof(struct meteodailyforecast_fragment_t),
};
/* -------------------------------------------------------------------------------- */
/* Fragment 3 meteo "horaire" - matin/midi/soir (icone, temp moyenne) */
/* -------------------------------------------------------------------------------- */
struct meteoforecast_fragment_t
{
/* IMPORTANT: don't miss this part */
lv_fragment_t base;
/* States, object references and data fields for this fragment */
const char *title;
bool showDate;
};
static void meteoforecast_fragment_ctor(lv_fragment_t *self, void *args)
{
struct meteoforecast_fragment_t *myself = ((struct meteoforecast_fragment_t *)self);
myself->showDate = args;
}
static lv_obj_t *meteoforecast_fragment_create_obj(lv_fragment_t *self, lv_obj_t *parent)
{
lv_fragment_manager_t *manager = lv_fragment_manager_create(NULL);
// On affiche 3 fragment meteo. 1 pour chaque "horaire"
int args[2] = {0, ((struct meteoforecast_fragment_t *)self)->showDate};
lv_fragment_t *fragment = lv_fragment_create(&meteoHFragment, args);
lv_fragment_manager_add(manager, fragment, &parent);
args[0] = 1;
fragment = lv_fragment_create(&meteoHFragment, args);
lv_fragment_manager_add(manager, fragment, &parent);
args[0] = 2;
fragment = lv_fragment_create(&meteoHFragment, args);
lv_fragment_manager_add(manager, fragment, &parent);
return parent;
}
const lv_fragment_class_t meteoforecast_cls = {
/* Initialize something needed */
.constructor_cb = meteoforecast_fragment_ctor,
/* Create view objects */
.create_obj_cb = meteoforecast_fragment_create_obj,
/* IMPORTANT: size of your fragment struct */
.instance_size = sizeof(struct meteoforecast_fragment_t),
};
uint32_t oldTab; uint32_t oldTab;
lv_fragment_manager_t *manager2;
lv_fragment_t *fragment2;
/*void tabChgEvt(lv_event_t *event) /*void tabChgEvt(lv_event_t *event)
{ {
@ -826,9 +657,9 @@ void draw_tabHome(lv_obj_t* parent){
lv_label_set_text(label, LV_SYMBOL_DOWN); lv_label_set_text(label, LV_SYMBOL_DOWN);
lv_obj_center(label); lv_obj_center(label);
lv_fragment_manager_t *manager = lv_fragment_manager_create(NULL); weatherH_fragment_create_obj(0,cont_col3);
lv_fragment_t *fragment = lv_fragment_create(&meteoforecast_cls, 0); weatherH_fragment_create_obj(1,cont_col3);
lv_fragment_manager_add(manager, fragment, &cont_col3); weatherH_fragment_create_obj(2,cont_col3);
} }
void draw_tabCuve(lv_obj_t* parent) void draw_tabCuve(lv_obj_t* parent)
@ -839,9 +670,12 @@ void draw_tabCuve(lv_obj_t* parent)
void draw_tabMeteo(lv_obj_t * parent) void draw_tabMeteo(lv_obj_t * parent)
{ {
manager2 = lv_fragment_manager_create(NULL); weatherDay_fragment_create_obj(0,parent);
fragment2 = lv_fragment_create(&meteodailyforecast_cls, (void *)1); weatherDay_fragment_create_obj(1,parent);
lv_fragment_manager_add(manager2, fragment2, &parent); weatherDay_fragment_create_obj(2,parent);
//manager2 = lv_fragment_manager_create(NULL);
//fragment2 = lv_fragment_create(&meteodailyforecast_cls, (void *)1);
//lv_fragment_manager_add(manager2, fragment2, &parent);
} }
void draw_tabVolets(lv_obj_t* parent) void draw_tabVolets(lv_obj_t* parent)