Move R2D/precharge bar to custom container

This commit is contained in:
2024-06-11 22:17:21 +02:00
parent 5a66f9bc54
commit cb2f55be1b
19 changed files with 382 additions and 170 deletions

View File

@ -0,0 +1,45 @@
#include "gui/common/NamedField.hpp"
#include <gui/containers/ProgressBar.hpp>
ProgressBar::ProgressBar() {}
void ProgressBar::initialize() { ProgressBarBase::initialize(); }
void ProgressBar::setProgress(bool active, ProgressType type, float progress) {
if (active) {
switch (type) {
case ProgressType::PRECHARGE:
prechargeLabel.setVisible(true);
r2dLabel.setVisible(false);
r2dProgressLabel.setVisible(false);
progressBar.setValue(progress);
break;
case ProgressType::R2D:
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);
progress = progress - R2D_TSACTIVE;
progressBar.setValue(progress * 100 / 5);
break;
}
prechargeLabel.invalidate();
r2dProgressLabel.invalidate();
r2dLabel.invalidate();
progressBar.setVisible(true);
progressBar.invalidate();
} else if (progressBar.isVisible()) {
prechargeLabel.setVisible(false);
prechargeLabel.invalidate();
r2dLabel.setVisible(false);
r2dLabel.invalidate();
r2dProgressLabel.setVisible(false);
r2dProgressLabel.invalidate();
progressBar.setVisible(false);
progressBar.invalidate();
}
}

View File

@ -2,6 +2,7 @@
#include <gui/driverview_screen/DriverViewView.hpp>
#include "gui/common/NamedField.hpp"
#include "gui/containers/ProgressBar.hpp"
constexpr int32_t SHOW_ERRORS_FOR = 10000; // ms
@ -48,13 +49,12 @@ void DriverViewPresenter::updateProgress() {
progress =
vehicle_state.ts_voltage_veh / vehicle_state.ts_voltage_bat * 100;
}
view.setProgress(true, DriverViewProgressType::PRECHARGE, progress);
view.setProgress(true, ProgressType::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);
view.setProgress(true, ProgressType::R2D, vehicle_state.r2d_progress);
} else {
view.setProgress(false, DriverViewProgressType::PRECHARGE, 0);
view.setProgress(false, ProgressType::PRECHARGE, 0);
}
}

View File

@ -1,6 +1,7 @@
#include "gui/common/NamedField.hpp"
#include "gui/containers/DriverViewField.hpp"
#include "gui/containers/DriverViewStatusItem.hpp"
#include "gui/containers/ProgressBar.hpp"
#include "gui/driverview_screen/DriverViewPresenter.hpp"
#include "texts/TextKeysAndLanguages.hpp"
#include "touchgfx/Callback.hpp"
@ -96,44 +97,9 @@ void DriverViewView::setTSSoC(uint8_t value) {
socLabel.invalidate();
}
void DriverViewView::setProgress(bool active, DriverViewProgressType type,
void DriverViewView::setProgress(bool active, ProgressType type,
float progress) {
if (active) {
switch (type) {
case DriverViewProgressType::PRECHARGE:
prechargeLabel.setVisible(true);
r2dLabel.setVisible(false);
r2dProgressLabel.setVisible(false);
progressBar.setValue(progress);
break;
case DriverViewProgressType::R2D:
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);
progress = progress - R2D_TSACTIVE;
progressBar.setValue(progress * 100 / 5);
break;
}
prechargeLabel.invalidate();
r2dProgressLabel.invalidate();
r2dLabel.invalidate();
progressBar.setVisible(true);
progressBar.invalidate();
} else if (progressBar.isVisible()) {
prechargeLabel.setVisible(false);
prechargeLabel.invalidate();
r2dLabel.setVisible(false);
r2dLabel.invalidate();
r2dProgressLabel.setVisible(false);
r2dProgressLabel.invalidate();
progressBar.setVisible(false);
progressBar.invalidate();
}
progressBar.setProgress(active, type, progress);
}
void DriverViewView::showAMSError() {