Move R2D/precharge bar to custom container
This commit is contained in:
		
							
								
								
									
										23
									
								
								TouchGFX/gui/include/gui/containers/ProgressBar.hpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								TouchGFX/gui/include/gui/containers/ProgressBar.hpp
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,23 @@
 | 
			
		||||
#ifndef PROGRESSBAR_HPP
 | 
			
		||||
#define PROGRESSBAR_HPP
 | 
			
		||||
 | 
			
		||||
#include <gui_generated/containers/ProgressBarBase.hpp>
 | 
			
		||||
 | 
			
		||||
enum class ProgressType { PRECHARGE, R2D };
 | 
			
		||||
 | 
			
		||||
class ProgressBar : public ProgressBarBase {
 | 
			
		||||
public:
 | 
			
		||||
  ProgressBar();
 | 
			
		||||
  virtual ~ProgressBar() {}
 | 
			
		||||
 | 
			
		||||
  virtual void initialize();
 | 
			
		||||
 | 
			
		||||
  void setProgress(bool active, ProgressType type, float progress);
 | 
			
		||||
 | 
			
		||||
protected:
 | 
			
		||||
private:
 | 
			
		||||
  touchgfx::Unicode::UnicodeChar r2dProgBuffer[16];
 | 
			
		||||
  touchgfx::Unicode::UnicodeChar socBuffer[4];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif // PROGRESSBAR_HPP
 | 
			
		||||
@ -3,15 +3,12 @@
 | 
			
		||||
 | 
			
		||||
#include "gui/common/NamedField.hpp"
 | 
			
		||||
#include "gui/containers/DriverViewFieldSelection.hpp"
 | 
			
		||||
#include "touchgfx/Unicode.hpp"
 | 
			
		||||
#include "touchgfx/containers/scrollers/DrawableList.hpp"
 | 
			
		||||
#include "gui/containers/ProgressBar.hpp"
 | 
			
		||||
#include <gui/driverview_screen/DriverViewPresenter.hpp>
 | 
			
		||||
#include <gui_generated/driverview_screen/DriverViewViewBase.hpp>
 | 
			
		||||
 | 
			
		||||
#include "vehicle_state.h"
 | 
			
		||||
 | 
			
		||||
enum class DriverViewProgressType { PRECHARGE, R2D };
 | 
			
		||||
 | 
			
		||||
class DriverViewView : public DriverViewViewBase {
 | 
			
		||||
public:
 | 
			
		||||
  DriverViewView();
 | 
			
		||||
@ -28,7 +25,7 @@ public:
 | 
			
		||||
 | 
			
		||||
  void setTemps(const Temperatures &temps);
 | 
			
		||||
  void setTSSoC(uint8_t soc);
 | 
			
		||||
  void setProgress(bool active, DriverViewProgressType type, float progress);
 | 
			
		||||
  void setProgress(bool active, ProgressType type, float progress);
 | 
			
		||||
 | 
			
		||||
  void showAMSError();
 | 
			
		||||
  void clearErrorPopup();
 | 
			
		||||
@ -53,7 +50,6 @@ private:
 | 
			
		||||
  size_t selectedFieldIndex;
 | 
			
		||||
  DataFieldType fieldTypes[NUM_FIELDS];
 | 
			
		||||
 | 
			
		||||
  touchgfx::Unicode::UnicodeChar r2dProgBuffer[16];
 | 
			
		||||
  touchgfx::Unicode::UnicodeChar socBuffer[4];
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										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