#include #include #include "gui/common/NamedField.hpp" #include "vehicle.h" DriverViewPresenter::DriverViewPresenter(DriverViewView &v) : view(v), fields{DF_MinCellVolt, DF_TSVoltageVeh, DF_TSCurrent} {} void DriverViewPresenter::activate() { for (size_t i = 0; i < 3; i++) { view.setFieldType(i, fields[i]); } } void DriverViewPresenter::deactivate() {} void DriverViewPresenter::vehicleStateUpdated() { view.setTireTemps(vehicle_state.tire_temps); view.setTSSoC(vehicle_state.soc); updateProgress(); updateErrorPopup(); view.updateFieldValues(); } void DriverViewPresenter::nextScreen() { static_cast(Application::getInstance()) ->gotoVehicleConfigScreenNoTransition(); } void DriverViewPresenter::setFieldType(size_t i, DataFieldType type) { fields[i] = type; view.setFieldType(i, type); } void DriverViewPresenter::updateProgress() { if (vehicle_state.ts_state == TS_PRECHARGE) { float progress = 0; if (vehicle_state.ts_voltage_bat != 0) { progress = vehicle_state.ts_voltage_veh / vehicle_state.ts_voltage_bat * 100; } view.setProgress(true, DriverViewProgressType::PRECHARGE, progress); } 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.setProgress(false, DriverViewProgressType::PRECHARGE, 0); } } void DriverViewPresenter::updateErrorPopup() { if (vehicle_state.ts_state == TS_ERROR) { view.showAMSError(); } else { view.clearErrorPopup(); } }