Make R2D progress display prettier

This commit is contained in:
2023-04-29 23:37:53 +02:00
parent b2f5d48b73
commit cb2d707bd9
19 changed files with 209 additions and 213 deletions

View File

@ -66,4 +66,6 @@ private:
void updateValueBuffer();
};
void *get_r2dprog_text();
#endif // NAMEDFIELD_HPP

View File

@ -25,8 +25,8 @@ void DriverViewPresenter::vehicleStateUpdated() {
vehicle_state.ts_voltage_veh / vehicle_state.ts_voltage_bat * 100;
}
view.setProgress(true, DriverViewProgressType::PRECHARGE, progress);
} else if (vehicle_state.r2d_progress != R2D_NONE &&
vehicle_state.r2d_progress != R2D_INIT_SUCCESS) {
} else if (vehicle_state.r2d_progress > R2D_TSACTIVE &&
vehicle_state.r2d_progress < R2D_INIT_SUCCESS) {
view.setProgress(true, DriverViewProgressType::R2D,
vehicle_state.r2d_progress);
} else {

View File

@ -3,7 +3,9 @@
#include "gui/driverview_screen/DriverViewPresenter.hpp"
#include "texts/TextKeysAndLanguages.hpp"
#include "touchgfx/Unicode.hpp"
#include "vehicle.h"
#include <gui/driverview_screen/DriverViewView.hpp>
#include <stddef.h>
DriverViewView::DriverViewView()
@ -54,28 +56,34 @@ void DriverViewView::setProgress(bool active, DriverViewProgressType type,
case DriverViewProgressType::PRECHARGE:
prechargeLabel.setVisible(true);
r2dLabel.setVisible(false);
r2dProgressLabel.setVisible(false);
progressBar.setValue(progress);
break;
case DriverViewProgressType::R2D:
touchgfx::Unicode::snprintf(
r2dProgBuffer, sizeof(r2dProgBuffer) / sizeof(*r2dProgBuffer), "%d",
progress);
r2dLabel.setWildcard(r2dProgBuffer);
const char *progText = static_cast<const char *>(get_r2dprog_text());
touchgfx::Unicode::strncpy(r2dProgBuffer, progText,
sizeof(r2dProgBuffer) /
sizeof(*r2dProgBuffer));
r2dProgressLabel.setWildcard(r2dProgBuffer);
r2dProgressLabel.setVisible(true);
r2dLabel.setVisible(true);
prechargeLabel.setVisible(false);
progressBar.setValue(progress * 100 / 8);
progress = progress - R2D_TSACTIVE;
progressBar.setValue(progress * 100 / 5);
break;
}
prechargeLabel.invalidate();
r2dProgressLabel.invalidate();
r2dLabel.invalidate();
progressBar.setVisible(true);
progressBar.invalidate();
} else if (prechargeLabel.isVisible() || r2dLabel.isVisible() ||
progressBar.isVisible()) {
} else if (progressBar.isVisible()) {
prechargeLabel.setVisible(false);
prechargeLabel.invalidate();
r2dLabel.setVisible(false);
r2dLabel.invalidate();
r2dProgressLabel.setVisible(false);
r2dProgressLabel.invalidate();
progressBar.setVisible(false);
progressBar.invalidate();
}