Some GUI modifications of the altimeter app in progress on the lvgl simulator
This commit is contained in:
parent
1f5f2650cf
commit
fad163f028
@ -268,17 +268,19 @@ static void apply_altitude_setting_event_cb(lv_event_t *e)
|
||||
{
|
||||
AltimeterScreen_t *altimeterScreen = lv_event_get_user_data(e);
|
||||
|
||||
bool apply_action = (bool)lv_obj_get_user_data(lv_event_get_target(e));
|
||||
|
||||
/* Call the user feedback function if one is registered */
|
||||
if(altimeterScreen->altimeterScreenUserFeedbackCb)altimeterScreen->altimeterScreenUserFeedbackCb();
|
||||
|
||||
altimeterScreen->altitudeOffset_spinbox.value = lv_spinbox_get_value(altimeterScreen->altitudeOffset_spinbox.spinbox);
|
||||
|
||||
altimeterScreen->altitudeOffset = altimeterScreen->lastReadAltitude - (altimeterScreen->altitudeOffset_spinbox.value / 10.0);
|
||||
|
||||
altimeterScreen->vsiFloat = altimeterScreen->lastReadAltitude;
|
||||
if(apply_action)
|
||||
{
|
||||
altimeterScreen->altitudeOffset_spinbox.value = lv_spinbox_get_value(altimeterScreen->altitudeOffset_spinbox.spinbox);
|
||||
altimeterScreen->altitudeOffset = altimeterScreen->lastReadAltitude - (altimeterScreen->altitudeOffset_spinbox.value / 10.0);
|
||||
altimeterScreen->vsiFloat = altimeterScreen->lastReadAltitude;
|
||||
}
|
||||
|
||||
altimeterScreen->altimeterScreenDisplayedView = ALTIMETER_SCREEN_ALTITUDE_VIEW;
|
||||
|
||||
lv_obj_t *display = _create_altimeter_display(altimeterScreen);
|
||||
if(display) lv_scr_load_anim(display, LV_SCR_LOAD_ANIM_MOVE_BOTTOM, 400, 0, true);
|
||||
|
||||
@ -444,7 +446,8 @@ static void _create_pressure_display(AltimeterScreen_t * const altimeterScreen)
|
||||
lv_img_set_src(reset_btn, &altimeter_asset_reset_icon);
|
||||
lv_obj_align(reset_btn, LV_ALIGN_CENTER, 0 ,0);
|
||||
lv_obj_add_flag(reset_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_add_event_cb(reset_btn, &(reset_pressure_event_cb), LV_EVENT_CLICKED, altimeterScreen);
|
||||
/* Using a long pressed event so that no missclicks trigger a reset */
|
||||
lv_obj_add_event_cb(reset_btn, &(reset_pressure_event_cb), LV_EVENT_LONG_PRESSED, altimeterScreen);
|
||||
|
||||
/* Set the min and max text */
|
||||
if(altimeterScreen->minValue.value_unit)
|
||||
@ -567,7 +570,8 @@ static void _create_altitude_display(AltimeterScreen_t * const altimeterScreen)
|
||||
lv_img_set_src(zeroing_btn, &altimeter_asset_calibration_icon);
|
||||
lv_obj_align(zeroing_btn, LV_ALIGN_CENTER, 75 ,5);
|
||||
lv_obj_add_flag(zeroing_btn, LV_OBJ_FLAG_ADV_HITTEST | LV_OBJ_FLAG_CLICKABLE);
|
||||
lv_obj_add_event_cb(zeroing_btn, &(zeroing_altitude_event_cb), LV_EVENT_CLICKED, altimeterScreen);
|
||||
/* Using a long pressed event so that no missclicks trigger a reset */
|
||||
lv_obj_add_event_cb(zeroing_btn, &(zeroing_altitude_event_cb), LV_EVENT_LONG_PRESSED, altimeterScreen);
|
||||
|
||||
/* Let's create the settings button */
|
||||
lv_obj_t *setting_btn = lv_img_create(inner_circle);
|
||||
@ -662,6 +666,7 @@ static void _create_altitude_setting_display(AltimeterScreen_t * const altimeter
|
||||
altimeterScreen->altitudeOffset_spinbox.spinbox = lv_spinbox_create(inner_circle);
|
||||
lv_obj_set_align(altimeterScreen->altitudeOffset_spinbox.spinbox, LV_ALIGN_CENTER);
|
||||
lv_obj_set_width(altimeterScreen->altitudeOffset_spinbox.spinbox, lv_pct(50));
|
||||
lv_obj_set_style_text_font(altimeterScreen->altitudeOffset_spinbox.spinbox, &lv_font_montserrat_16, LV_PART_MAIN);
|
||||
lv_spinbox_set_digit_format(altimeterScreen->altitudeOffset_spinbox.spinbox, 5, 4);
|
||||
//Max 9000 and min -1000 since we have a digit after the comma
|
||||
lv_spinbox_set_range(altimeterScreen->altitudeOffset_spinbox.spinbox, -10000, 90000);
|
||||
@ -682,13 +687,28 @@ static void _create_altitude_setting_display(AltimeterScreen_t * const altimeter
|
||||
lv_obj_add_event_cb(dec_btn, &(lv_spinbox_decrement_event_cb), LV_EVENT_ALL, altimeterScreen);
|
||||
|
||||
lv_obj_t *apply_btn = lv_btn_create(inner_circle);
|
||||
lv_obj_align(apply_btn, LV_ALIGN_CENTER, 0, 50);
|
||||
lv_obj_set_user_data(apply_btn, (void *)true);
|
||||
lv_obj_set_width(apply_btn, 86);
|
||||
|
||||
lv_obj_t *apply_btn_lbl = lv_label_create(apply_btn);
|
||||
lv_label_set_text_static(apply_btn_lbl, "Apply");
|
||||
lv_obj_center(apply_btn_lbl);
|
||||
lv_obj_add_event_cb(apply_btn, &(apply_altitude_setting_event_cb), LV_EVENT_CLICKED, altimeterScreen);
|
||||
|
||||
lv_obj_align(apply_btn, LV_ALIGN_CENTER, -45, 45);
|
||||
|
||||
|
||||
lv_obj_t *cancel_btn = lv_btn_create(inner_circle);
|
||||
lv_obj_set_user_data(cancel_btn, (void *)false);
|
||||
lv_obj_set_width(cancel_btn, 86);
|
||||
|
||||
lv_obj_t *cancel_btn_lbl = lv_label_create(cancel_btn);
|
||||
lv_label_set_text_static(cancel_btn_lbl, "Cancel");
|
||||
lv_obj_center(cancel_btn_lbl);
|
||||
lv_obj_add_event_cb(cancel_btn, &(apply_altitude_setting_event_cb), LV_EVENT_CLICKED, altimeterScreen);
|
||||
|
||||
lv_obj_align(cancel_btn, LV_ALIGN_CENTER, 45, 45);
|
||||
|
||||
/* We register the event callback to handle the cleanup */
|
||||
lv_obj_add_event_cb(altimeterScreen->displays[ALTIMETER_SCREEN_ALTITUDE_SETTING_VIEW], &(altitude_setting_display_cleanup_event_cb), LV_EVENT_DELETE, altimeterScreen);
|
||||
}
|
||||
@ -743,7 +763,7 @@ static void _update_pressure_chart(AltimeterScreen_t * const altimeterScreen)
|
||||
|
||||
static void _update_altitude_info(AltimeterScreen_t * const altimeterScreen)
|
||||
{
|
||||
sprintf(altimeterScreen->altitudeValue.value_text, "%.1f", altimeterScreen->lastReadAltitude - altimeterScreen->altitudeOffset);
|
||||
sprintf(altimeterScreen->altitudeValue.value_text, "%.2f", altimeterScreen->lastReadAltitude - altimeterScreen->altitudeOffset);
|
||||
sprintf(altimeterScreen->vsiValue.value_unit_text, "VSI : %s%.1f\nm/s", altimeterScreen->vsiFloat > 0 ? "+":"", altimeterScreen->vsiFloat);
|
||||
lv_label_set_text_static(altimeterScreen->altitudeValue.value, altimeterScreen->altitudeValue.value_text);
|
||||
lv_label_set_text_static(altimeterScreen->vsiValue.value_unit, altimeterScreen->vsiValue.value_unit_text);
|
||||
|
Loading…
Reference in New Issue
Block a user