diff --git a/main/ihm.c b/main/ihm.c index 3127679..930c5a4 100644 --- a/main/ihm.c +++ b/main/ihm.c @@ -312,35 +312,9 @@ void showMeteoIcon(const char *icon, lv_obj_t *desc_icon, int childNr) lv_image_set_src(img, 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) -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); @@ -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); // 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; } -// 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) -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); @@ -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); // 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); - lv_subject_add_observer_obj(tmpHSubj[((struct weatherH_fragment_t *)self)->horaireNr], weatherdataH_obs_cb, sup, NULL); + ESP_LOGE(TAG, "on positionne obs sur horaire %d", horaireNr); + lv_subject_add_observer_obj(tmpHSubj[horaireNr], weatherdataH_obs_cb, sup, NULL); 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; -lv_fragment_manager_t *manager2; -lv_fragment_t *fragment2; /*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_obj_center(label); - lv_fragment_manager_t *manager = lv_fragment_manager_create(NULL); - lv_fragment_t *fragment = lv_fragment_create(&meteoforecast_cls, 0); - lv_fragment_manager_add(manager, fragment, &cont_col3); + weatherH_fragment_create_obj(0,cont_col3); + weatherH_fragment_create_obj(1,cont_col3); + weatherH_fragment_create_obj(2,cont_col3); } 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) { - manager2 = lv_fragment_manager_create(NULL); - fragment2 = lv_fragment_create(&meteodailyforecast_cls, (void *)1); - lv_fragment_manager_add(manager2, fragment2, &parent); + weatherDay_fragment_create_obj(0,parent); + weatherDay_fragment_create_obj(1,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)