Move R2D/precharge bar to custom container
This commit is contained in:
45
TouchGFX/gui/src/containers/ProgressBar.cpp
Normal file
45
TouchGFX/gui/src/containers/ProgressBar.cpp
Normal 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();
|
||||
}
|
||||
}
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user