  protected:
    void paintEvent(QPaintEvent*) override;
  
  private:
    QColor bg;
    QLabel *title, *msg;
    QVBoxLayout *layout;
  
    void updateAlert(const QString &text1, const QString &text2, float blink_rate,
                     const std::string &type, cereal::ControlsState::AlertSize size, AudibleAlert sound);
  
    // sounds
    std::map<AudibleAlert, std::pair<QString, bool>> sound_map {
      // AudibleAlert, (file path, inf loop)
 
</s> remove   // sounds
 </s> add  </s> remove 
void configFont(QPainter &p, QString family, int size, int weight) {
  QFont f(family);
  f.setPixelSize(size);
  f.setWeight(weight);
  p.setFont(f);
}
 </s> add #include "selfdrive/ui/qt/util.h"
  void stopSounds();
  void playSound(AudibleAlert alert);
  void updateAlert(const QString &t1, const QString &t2, float blink_rate,
  protected:
    void paintEvent(QPaintEvent*) override;
  
  private:
  void stopSounds();
  void playSound(AudibleAlert alert);
  void updateAlert(const QString &t1, const QString &t2, float blink_rate,
  void stopSounds();
  void playSound(AudibleAlert alert);
  void updateAlert(const QString &t1, const QString &t2, float blink_rate,
  void stopSounds();
  void playSound(AudibleAlert alert);
  void updateAlert(const QString &t1, const QString &t2, float blink_rate,
  void stopSounds();
  void playSound(AudibleAlert alert);
  void updateAlert(const QString &t1, const QString &t2, float blink_rate,
  void stopSounds();
  void playSound(AudibleAlert alert);
  void updateAlert(const QString &t1, const QString &t2, float blink_rate,
                     const std::string &type, cereal::ControlsState::AlertSize size, AudibleAlert sound);
  
    // sounds
    std::map<AudibleAlert, std::pair<QString, bool>> sound_map {
      // AudibleAlert, (file path, inf loop)
keep keep keep keep replace replace replace replace replace keep keep keep keep keep
 match nvg onroad alerts (#20854) 
selfdrive/ui/qt/onroad.h