Qt: update developer page when it's visible (#20396)

* simplify&cleanup

* cleanup

Co-authored-by: Adeeb Shihadeh <adeebshihadeh@gmail.com>
old-commit-hash: ddde7efb4b
commatwo_master
Dean Lee 4 years ago committed by GitHub
parent 7c6b409b1d
commit d06d10da68
  1. 44
      selfdrive/ui/qt/offroad/settings.cc
  2. 10
      selfdrive/ui/qt/offroad/settings.hpp

@ -31,7 +31,7 @@ QFrame* horizontal_line(QWidget* parent = 0){
return line; return line;
} }
QWidget* labelWidget(QString labelName, QString labelContent){ QWidget *labelWidget(QString labelName, QString labelContent, QLabel **label = nullptr) {
QHBoxLayout* labelLayout = new QHBoxLayout; QHBoxLayout* labelLayout = new QHBoxLayout;
labelLayout->addWidget(new QLabel(labelName), 0, Qt::AlignLeft); labelLayout->addWidget(new QLabel(labelName), 0, Qt::AlignLeft);
QLabel* paramContent = new QLabel(labelContent); QLabel* paramContent = new QLabel(labelContent);
@ -39,6 +39,7 @@ QWidget* labelWidget(QString labelName, QString labelContent){
labelLayout->addWidget(paramContent, 0, Qt::AlignRight); labelLayout->addWidget(paramContent, 0, Qt::AlignRight);
QWidget* labelWidget = new QWidget; QWidget* labelWidget = new QWidget;
labelWidget->setLayout(labelLayout); labelWidget->setLayout(labelLayout);
if (label) *label = paramContent;
return labelWidget; return labelWidget;
} }
@ -157,7 +158,8 @@ QWidget * device_panel() {
//} //}
for (auto &l : labels) { for (auto &l : labels) {
device_layout->addWidget(labelWidget(QString::fromStdString(l.first), QString::fromStdString(l.second)), 0, Qt::AlignTop); device_layout->addWidget(labelWidget(QString::fromStdString(l.first),
QString::fromStdString(l.second)), 0, Qt::AlignTop);
} }
QPushButton* dcam_view = new QPushButton("Driver camera view"); QPushButton* dcam_view = new QPushButton("Driver camera view");
@ -218,13 +220,17 @@ QWidget * device_panel() {
return widget; return widget;
} }
QWidget * developer_panel() { DeveloperPanel::DeveloperPanel(QWidget* parent) : QFrame(parent) {
QVBoxLayout *main_layout = new QVBoxLayout; QVBoxLayout *main_layout = new QVBoxLayout(this);
main_layout->setMargin(100); main_layout->setMargin(100);
setLayout(main_layout);
setStyleSheet(R"(QLabel {font-size: 50px;})");
}
void DeveloperPanel::showEvent(QShowEvent *event) {
Params params = Params(); Params params = Params();
std::string brand = params.read_db_bool("Passive") ? "dashcam" : "openpilot"; std::string brand = params.read_db_bool("Passive") ? "dashcam" : "openpilot";
std::vector<std::pair<std::string, std::string>> labels = { QList<QPair<QString, std::string>> dev_params = {
{"Version", brand + " v" + params.get("Version", false)}, {"Version", brand + " v" + params.get("Version", false)},
{"Git Branch", params.get("GitBranch", false)}, {"Git Branch", params.get("GitBranch", false)},
{"Git Commit", params.get("GitCommit", false).substr(0, 10)}, {"Git Commit", params.get("GitCommit", false).substr(0, 10)},
@ -232,23 +238,19 @@ QWidget * developer_panel() {
{"OS Version", Hardware::get_os_version()}, {"OS Version", Hardware::get_os_version()},
}; };
for (int i = 0; i < labels.size(); i++) { for (int i = 0; i < dev_params.size(); i++) {
auto l = labels[i]; const auto &[name, value] = dev_params[i];
main_layout->addWidget(labelWidget(QString::fromStdString(l.first), QString::fromStdString(l.second))); if (labels.size() > i) {
labels[i]->setText(QString::fromStdString(value));
if(i+1 < labels.size()) { } else {
main_layout->addWidget(horizontal_line()); QLabel *label = nullptr;
layout()->addWidget(labelWidget(name, QString::fromStdString(value), &label));
if (i < (dev_params.size() - 1)) {
layout()->addWidget(horizontal_line());
}
labels.push_back(label);
} }
} }
QWidget *widget = new QWidget;
widget->setLayout(main_layout);
widget->setStyleSheet(R"(
QLabel {
font-size: 50px;
}
)");
return widget;
} }
QWidget * network_panel(QWidget * parent) { QWidget * network_panel(QWidget * parent) {
@ -318,7 +320,7 @@ SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) {
{"Device", device_panel()}, {"Device", device_panel()},
{"Network", network_panel(this)}, {"Network", network_panel(this)},
{"Toggles", toggles_panel()}, {"Toggles", toggles_panel()},
{"Developer", developer_panel()}, {"Developer", new DeveloperPanel()},
}; };
sidebar_layout->addSpacing(45); sidebar_layout->addSpacing(45);

@ -3,6 +3,7 @@
#include <QWidget> #include <QWidget>
#include <QFrame> #include <QFrame>
#include <QTimer> #include <QTimer>
#include <QLabel>
#include <QPushButton> #include <QPushButton>
#include <QButtonGroup> #include <QButtonGroup>
#include <QStackedLayout> #include <QStackedLayout>
@ -26,6 +27,15 @@ public slots:
void checkboxClicked(int state); void checkboxClicked(int state);
}; };
class DeveloperPanel : public QFrame {
Q_OBJECT
public:
explicit DeveloperPanel(QWidget* parent = nullptr);
protected:
void showEvent(QShowEvent *event) override;
QList<QLabel *> labels;
};
// *** settings window *** // *** settings window ***

Loading…
Cancel
Save