|
|
@ -37,6 +37,8 @@ Sidebar::Sidebar(QWidget *parent) : QFrame(parent) { |
|
|
|
home_img = QImage("../assets/images/button_home.png").scaled(180, 180, Qt::KeepAspectRatio, Qt::SmoothTransformation); |
|
|
|
home_img = QImage("../assets/images/button_home.png").scaled(180, 180, Qt::KeepAspectRatio, Qt::SmoothTransformation); |
|
|
|
settings_img = QImage("../assets/images/button_settings.png").scaled(settings_btn.width(), settings_btn.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);; |
|
|
|
settings_img = QImage("../assets/images/button_settings.png").scaled(settings_btn.width(), settings_btn.height(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation);; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
connect(this, &Sidebar::valueChanged, [=] { update(); }); |
|
|
|
|
|
|
|
|
|
|
|
setFixedWidth(300); |
|
|
|
setFixedWidth(300); |
|
|
|
setMinimumHeight(vwp_h); |
|
|
|
setMinimumHeight(vwp_h); |
|
|
|
setStyleSheet("background-color: rgb(57, 57, 57);"); |
|
|
|
setStyleSheet("background-color: rgb(57, 57, 57);"); |
|
|
@ -48,45 +50,44 @@ void Sidebar::mousePressEvent(QMouseEvent *event) { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Sidebar::update(const UIState &s) { |
|
|
|
void Sidebar::updateState(const UIState &s) { |
|
|
|
if (s.sm->frame % (6*UI_FREQ) == 0) { |
|
|
|
auto &sm = *(s.sm); |
|
|
|
connect_str = "OFFLINE"; |
|
|
|
|
|
|
|
connect_status = warning_color; |
|
|
|
|
|
|
|
auto last_ping = params.get<float>("LastAthenaPingTime"); |
|
|
|
|
|
|
|
if (last_ping) { |
|
|
|
|
|
|
|
bool online = nanos_since_boot() - *last_ping < 80e9; |
|
|
|
|
|
|
|
connect_str = online ? "ONLINE" : "ERROR"; |
|
|
|
|
|
|
|
connect_status = online ? good_color : danger_color; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
repaint(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
auto deviceState = (*s.sm)["deviceState"].getDeviceState(); |
|
|
|
auto deviceState = sm["deviceState"].getDeviceState(); |
|
|
|
net_type = deviceState.getNetworkType(); |
|
|
|
setProperty("netType", (int)deviceState.getNetworkType()); |
|
|
|
strength = deviceState.getNetworkStrength(); |
|
|
|
setProperty("netStrength", (int)deviceState.getNetworkStrength()); |
|
|
|
|
|
|
|
|
|
|
|
temp_status = danger_color; |
|
|
|
auto last_ping = deviceState.getLastAthenaPingTime(); |
|
|
|
|
|
|
|
if (last_ping == 0) { |
|
|
|
|
|
|
|
setProperty("connectStr", "OFFLINE"); |
|
|
|
|
|
|
|
setProperty("connectStatus", warning_color); |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
bool online = nanos_since_boot() - last_ping < 80e9; |
|
|
|
|
|
|
|
setProperty("connectStr", online ? "ONLINE" : "ERROR"); |
|
|
|
|
|
|
|
setProperty("connectStatus", online ? good_color : danger_color); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QColor tempStatus = danger_color; |
|
|
|
auto ts = deviceState.getThermalStatus(); |
|
|
|
auto ts = deviceState.getThermalStatus(); |
|
|
|
if (ts == cereal::DeviceState::ThermalStatus::GREEN) { |
|
|
|
if (ts == cereal::DeviceState::ThermalStatus::GREEN) { |
|
|
|
temp_status = good_color; |
|
|
|
tempStatus = good_color; |
|
|
|
} else if (ts == cereal::DeviceState::ThermalStatus::YELLOW) { |
|
|
|
} else if (ts == cereal::DeviceState::ThermalStatus::YELLOW) { |
|
|
|
temp_status = warning_color; |
|
|
|
tempStatus = warning_color; |
|
|
|
} |
|
|
|
} |
|
|
|
temp_val = (int)deviceState.getAmbientTempC(); |
|
|
|
setProperty("tempStatus", tempStatus); |
|
|
|
|
|
|
|
setProperty("tempVal", (int)deviceState.getAmbientTempC()); |
|
|
|
|
|
|
|
|
|
|
|
panda_str = "VEHICLE\nONLINE"; |
|
|
|
QString pandaStr = "VEHICLE\nONLINE"; |
|
|
|
panda_status = good_color; |
|
|
|
QColor pandaStatus = good_color; |
|
|
|
if (s.scene.pandaType == cereal::PandaState::PandaType::UNKNOWN) { |
|
|
|
if (s.scene.pandaType == cereal::PandaState::PandaType::UNKNOWN) { |
|
|
|
panda_status = danger_color; |
|
|
|
pandaStatus = danger_color; |
|
|
|
panda_str = "NO\nPANDA"; |
|
|
|
pandaStr = "NO\nPANDA"; |
|
|
|
} else if (Hardware::TICI() && s.scene.started) { |
|
|
|
} else if (Hardware::TICI() && s.scene.started) { |
|
|
|
panda_str = QString("SATS %1\nACC %2").arg(s.scene.satelliteCount).arg(fmin(10, s.scene.gpsAccuracy), 0, 'f', 2); |
|
|
|
pandaStr = QString("SATS %1\nACC %2").arg(s.scene.satelliteCount).arg(fmin(10, s.scene.gpsAccuracy), 0, 'f', 2); |
|
|
|
panda_status = (*s.sm)["liveLocationKalman"].getLiveLocationKalman().getGpsOK() ? good_color : warning_color; |
|
|
|
pandaStatus = sm["liveLocationKalman"].getLiveLocationKalman().getGpsOK() ? good_color : warning_color; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (s.sm->updated("deviceState") || s.sm->updated("pandaState")) { |
|
|
|
|
|
|
|
repaint(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
setProperty("pandaStr", pandaStr); |
|
|
|
|
|
|
|
setProperty("pandaStatus", pandaStatus); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void Sidebar::paintEvent(QPaintEvent *event) { |
|
|
|
void Sidebar::paintEvent(QPaintEvent *event) { |
|
|
@ -101,7 +102,7 @@ void Sidebar::paintEvent(QPaintEvent *event) { |
|
|
|
p.drawImage(60, 1080 - 180 - 40, home_img); |
|
|
|
p.drawImage(60, 1080 - 180 - 40, home_img); |
|
|
|
|
|
|
|
|
|
|
|
// network
|
|
|
|
// network
|
|
|
|
p.drawImage(58, 196, signal_imgs[strength]); |
|
|
|
p.drawImage(58, 196, signal_imgs[net_strength]); |
|
|
|
configFont(p, "Open Sans", 35, "Regular"); |
|
|
|
configFont(p, "Open Sans", 35, "Regular"); |
|
|
|
p.setPen(QColor(0xff, 0xff, 0xff)); |
|
|
|
p.setPen(QColor(0xff, 0xff, 0xff)); |
|
|
|
const QRect r = QRect(50, 247, 100, 50); |
|
|
|
const QRect r = QRect(50, 247, 100, 50); |
|
|
|