From 8f5c7e7bb5e4796708a8be672529bf65e89edaca Mon Sep 17 00:00:00 2001 From: Dean Lee Date: Sun, 13 Jun 2021 12:28:17 +0800 Subject: [PATCH] UI widgets: remove unnecessary setLayout (#21232) * remove setlayout * remove setLayout * space * Update selfdrive/ui/qt/maps/map.cc Co-authored-by: Adeeb Shihadeh --- selfdrive/ui/qt/home.cc | 15 +++--- selfdrive/ui/qt/maps/map.cc | 29 +++++----- selfdrive/ui/qt/maps/map_settings.cc | 9 ++-- selfdrive/ui/qt/offroad/networking.cc | 66 +++++++++++------------ selfdrive/ui/qt/offroad/networking.h | 4 +- selfdrive/ui/qt/offroad/onboarding.cc | 6 +-- selfdrive/ui/qt/offroad/settings.cc | 46 +++++++--------- selfdrive/ui/qt/onroad.cc | 15 +++--- selfdrive/ui/qt/onroad.h | 2 +- selfdrive/ui/qt/setup/reset.cc | 11 ++-- selfdrive/ui/qt/setup/setup.cc | 25 ++++----- selfdrive/ui/qt/setup/wifi.cc | 8 ++- selfdrive/ui/qt/spinner.cc | 3 +- selfdrive/ui/qt/text.cc | 9 ++-- selfdrive/ui/qt/widgets/controls.cc | 9 ++-- selfdrive/ui/qt/widgets/drive_stats.cc | 1 - selfdrive/ui/qt/widgets/input.cc | 25 ++++----- selfdrive/ui/qt/widgets/input.h | 4 +- selfdrive/ui/qt/widgets/keyboard.cc | 16 +++--- selfdrive/ui/qt/widgets/offroad_alerts.cc | 16 +++--- selfdrive/ui/qt/widgets/setup.cc | 37 ++++++------- selfdrive/ui/qt/window.cc | 3 +- 22 files changed, 152 insertions(+), 207 deletions(-) diff --git a/selfdrive/ui/qt/home.cc b/selfdrive/ui/qt/home.cc index 5db715966d..4b58e8a7ab 100644 --- a/selfdrive/ui/qt/home.cc +++ b/selfdrive/ui/qt/home.cc @@ -16,17 +16,17 @@ // HomeWindow: the container for the offroad and onroad UIs HomeWindow::HomeWindow(QWidget* parent) : QWidget(parent) { - QHBoxLayout *layout = new QHBoxLayout(this); - layout->setMargin(0); - layout->setSpacing(0); + QHBoxLayout *main_layout = new QHBoxLayout(this); + main_layout->setMargin(0); + main_layout->setSpacing(0); sidebar = new Sidebar(this); - layout->addWidget(sidebar); + main_layout->addWidget(sidebar); QObject::connect(this, &HomeWindow::update, sidebar, &Sidebar::updateState); QObject::connect(sidebar, &Sidebar::openSettings, this, &HomeWindow::openSettings); slayout = new QStackedLayout(); - layout->addLayout(slayout); + main_layout->addLayout(slayout); onroad = new OnroadWindow(this); slayout->addWidget(onroad); @@ -43,8 +43,6 @@ HomeWindow::HomeWindow(QWidget* parent) : QWidget(parent) { showDriverView(false); }); slayout->addWidget(driver_view); - - setLayout(layout); } void HomeWindow::offroadTransition(bool offroad) { @@ -88,7 +86,7 @@ void HomeWindow::mousePressEvent(QMouseEvent* e) { // OffroadHome: the offroad home page OffroadHome::OffroadHome(QWidget* parent) : QFrame(parent) { - QVBoxLayout* main_layout = new QVBoxLayout(); + QVBoxLayout* main_layout = new QVBoxLayout(this); main_layout->setMargin(50); // top header @@ -140,7 +138,6 @@ OffroadHome::OffroadHome(QWidget* parent) : QFrame(parent) { QObject::connect(timer, &QTimer::timeout, this, &OffroadHome::refresh); timer->start(10 * 1000); - setLayout(main_layout); setStyleSheet(R"( OffroadHome { background-color: black; diff --git a/selfdrive/ui/qt/maps/map.cc b/selfdrive/ui/qt/maps/map.cc index c1ec372cf7..87767d7e5d 100644 --- a/selfdrive/ui/qt/maps/map.cc +++ b/selfdrive/ui/qt/maps/map.cc @@ -441,18 +441,19 @@ void MapWindow::offroadTransition(bool offroad) { } MapInstructions::MapInstructions(QWidget * parent) : QWidget(parent) { - QHBoxLayout *layout_outer = new QHBoxLayout; - layout_outer->setContentsMargins(11, 50, 11, 11); + QHBoxLayout *main_layout = new QHBoxLayout(this); + main_layout->setContentsMargins(11, 50, 11, 11); { QVBoxLayout *layout = new QVBoxLayout; icon_01 = new QLabel; layout->addWidget(icon_01); layout->addStretch(); - layout_outer->addLayout(layout); + main_layout->addLayout(layout); } { - QVBoxLayout *layout = new QVBoxLayout; + QWidget *w = new QWidget; + QVBoxLayout *layout = new QVBoxLayout(w); distance = new QLabel; distance->setStyleSheet(R"(font-size: 75px; )"); @@ -471,12 +472,9 @@ MapInstructions::MapInstructions(QWidget * parent) : QWidget(parent) { lane_layout = new QHBoxLayout; layout->addLayout(lane_layout); - QWidget * w = new QWidget; - w->setLayout(layout); - layout_outer->addWidget(w); + main_layout->addWidget(w); } - setLayout(layout_outer); setStyleSheet(R"( * { color: white; @@ -608,8 +606,8 @@ void MapInstructions::updateInstructions(QMap banner, bool fu } MapETA::MapETA(QWidget * parent) : QWidget(parent) { - QHBoxLayout *layout_outer = new QHBoxLayout; - layout_outer->setContentsMargins(20, 25, 20, 25); + QHBoxLayout *main_layout = new QHBoxLayout(this); + main_layout->setContentsMargins(20, 25, 20, 25); { QVBoxLayout *layout = new QVBoxLayout; @@ -623,9 +621,9 @@ MapETA::MapETA(QWidget * parent) : QWidget(parent) { layout->addWidget(eta); layout->addWidget(eta_unit); layout->addStretch(); - layout_outer->addLayout(layout); + main_layout->addLayout(layout); } - layout_outer->addSpacing(30); + main_layout->addSpacing(30); { QVBoxLayout *layout = new QVBoxLayout; time = new QLabel; @@ -638,9 +636,9 @@ MapETA::MapETA(QWidget * parent) : QWidget(parent) { layout->addWidget(time); layout->addWidget(time_unit); layout->addStretch(); - layout_outer->addLayout(layout); + main_layout->addLayout(layout); } - layout_outer->addSpacing(30); + main_layout->addSpacing(30); { QVBoxLayout *layout = new QVBoxLayout; distance = new QLabel; @@ -652,10 +650,9 @@ MapETA::MapETA(QWidget * parent) : QWidget(parent) { layout->addWidget(distance); layout->addWidget(distance_unit); layout->addStretch(); - layout_outer->addLayout(layout); + main_layout->addLayout(layout); } - setLayout(layout_outer); setStyleSheet(R"( * { color: white; diff --git a/selfdrive/ui/qt/maps/map_settings.cc b/selfdrive/ui/qt/maps/map_settings.cc index d15dfa0588..f6a3bdaeb2 100644 --- a/selfdrive/ui/qt/maps/map_settings.cc +++ b/selfdrive/ui/qt/maps/map_settings.cc @@ -4,17 +4,16 @@ MapPanel::MapPanel(QWidget* parent) : QWidget(parent) { - QVBoxLayout *layout = new QVBoxLayout; + QVBoxLayout *main_layout = new QVBoxLayout(this); Params params = Params(); QString dongle = QString::fromStdString(params.get("DongleId", false)); // TODO: Add buttons for home/work shortcuts - layout->addWidget(new ParamControl("NavSettingTime24h", + main_layout->addWidget(new ParamControl("NavSettingTime24h", "Show ETA in 24h format", "Use 24h format instead of am/pm", "", this)); - layout->addStretch(); - setLayout(layout); -} \ No newline at end of file + main_layout->addStretch(); +} diff --git a/selfdrive/ui/qt/offroad/networking.cc b/selfdrive/ui/qt/offroad/networking.cc index 2e3bcb9d53..95cdc1dabd 100644 --- a/selfdrive/ui/qt/offroad/networking.cc +++ b/selfdrive/ui/qt/offroad/networking.cc @@ -24,14 +24,13 @@ void NetworkStrengthWidget::paintEvent(QPaintEvent* event) { // Networking functions Networking::Networking(QWidget* parent, bool show_advanced) : QWidget(parent), show_advanced(show_advanced) { - s = new QStackedLayout; + main_layout = new QStackedLayout(this); QLabel* warning = new QLabel("Network manager is inactive!"); warning->setAlignment(Qt::AlignCenter); warning->setStyleSheet(R"(font-size: 65px;)"); - s->addWidget(warning); - setLayout(s); + main_layout->addWidget(warning); QTimer* timer = new QTimer(this); QObject::connect(timer, &QTimer::timeout, this, &Networking::refresh); @@ -49,13 +48,13 @@ void Networking::attemptInitialization() { connect(wifi, &WifiManager::wrongPassword, this, &Networking::wrongPassword); - QVBoxLayout* vlayout = new QVBoxLayout; - + QWidget* wifiScreen = new QWidget(this); + QVBoxLayout* vlayout = new QVBoxLayout(wifiScreen); if (show_advanced) { QPushButton* advancedSettings = new QPushButton("Advanced"); advancedSettings->setStyleSheet("margin-right: 30px;"); advancedSettings->setFixedSize(350, 100); - connect(advancedSettings, &QPushButton::released, [=]() { s->setCurrentWidget(an); }); + connect(advancedSettings, &QPushButton::released, [=]() { main_layout->setCurrentWidget(an); }); vlayout->addSpacing(10); vlayout->addWidget(advancedSettings, 0, Qt::AlignRight); vlayout->addSpacing(10); @@ -65,13 +64,11 @@ void Networking::attemptInitialization() { connect(wifiWidget, &WifiUI::connectToNetwork, this, &Networking::connectToNetwork); vlayout->addWidget(new ScrollView(wifiWidget, this), 1); - QWidget* wifiScreen = new QWidget(this); - wifiScreen->setLayout(vlayout); - s->addWidget(wifiScreen); + main_layout->addWidget(wifiScreen); an = new AdvancedNetworking(this, wifi); - connect(an, &AdvancedNetworking::backPress, [=]() { s->setCurrentWidget(wifiScreen); }); - s->addWidget(an); + connect(an, &AdvancedNetworking::backPress, [=]() { main_layout->setCurrentWidget(wifiScreen); }); + main_layout->addWidget(an); setStyleSheet(R"( QPushButton { @@ -88,7 +85,7 @@ void Networking::attemptInitialization() { background-color: #222222; } )"); - s->setCurrentWidget(wifiScreen); + main_layout->setCurrentWidget(wifiScreen); ui_setup_complete = true; } @@ -129,21 +126,21 @@ void Networking::wrongPassword(const QString &ssid) { AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWidget(parent), wifi(wifi) { - QVBoxLayout* vlayout = new QVBoxLayout; - vlayout->setMargin(40); - vlayout->setSpacing(20); + QVBoxLayout* main_layout = new QVBoxLayout(this); + main_layout->setMargin(40); + main_layout->setSpacing(20); // Back button QPushButton* back = new QPushButton("Back"); back->setFixedSize(500, 100); connect(back, &QPushButton::released, [=]() { emit backPress(); }); - vlayout->addWidget(back, 0, Qt::AlignLeft); + main_layout->addWidget(back, 0, Qt::AlignLeft); // Enable tethering layout ToggleControl *tetheringToggle = new ToggleControl("Enable Tethering", "", "", wifi->tetheringEnabled()); - vlayout->addWidget(tetheringToggle); + main_layout->addWidget(tetheringToggle); QObject::connect(tetheringToggle, &ToggleControl::toggleFlipped, this, &AdvancedNetworking::toggleTethering); - vlayout->addWidget(horizontal_line(), 0); + main_layout->addWidget(horizontal_line(), 0); // Change tethering password editPasswordButton = new ButtonControl("Tethering Password", "EDIT", "", [=]() { @@ -152,21 +149,20 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid wifi->changeTetheringPassword(pass); } }); - vlayout->addWidget(editPasswordButton, 0); - vlayout->addWidget(horizontal_line(), 0); + main_layout->addWidget(editPasswordButton, 0); + main_layout->addWidget(horizontal_line(), 0); // IP address ipLabel = new LabelControl("IP Address", wifi->ipv4_address); - vlayout->addWidget(ipLabel, 0); - vlayout->addWidget(horizontal_line(), 0); + main_layout->addWidget(ipLabel, 0); + main_layout->addWidget(horizontal_line(), 0); // SSH keys - vlayout->addWidget(new SshToggle()); - vlayout->addWidget(horizontal_line(), 0); - vlayout->addWidget(new SshControl()); + main_layout->addWidget(new SshToggle()); + main_layout->addWidget(horizontal_line(), 0); + main_layout->addWidget(new SshControl()); - vlayout->addStretch(1); - setLayout(vlayout); + main_layout->addStretch(1); } void AdvancedNetworking::refresh() { @@ -187,21 +183,19 @@ void AdvancedNetworking::toggleTethering(bool enable) { // WifiUI functions WifiUI::WifiUI(QWidget *parent, WifiManager* wifi) : QWidget(parent), wifi(wifi) { - vlayout = new QVBoxLayout; + main_layout = new QVBoxLayout(this); // Scan on startup QLabel *scanning = new QLabel("Scanning for networks"); scanning->setStyleSheet(R"(font-size: 65px;)"); - vlayout->addWidget(scanning, 0, Qt::AlignCenter); - vlayout->setSpacing(25); - - setLayout(vlayout); + main_layout->addWidget(scanning, 0, Qt::AlignCenter); + main_layout->setSpacing(25); } void WifiUI::refresh() { wifi->request_scan(); wifi->refreshNetworks(); - clearLayout(vlayout); + clearLayout(main_layout); connectButtons = new QButtonGroup(this); // TODO check if this is a leak QObject::connect(connectButtons, qOverload(&QButtonGroup::buttonClicked), this, &WifiUI::handleButton); @@ -227,14 +221,14 @@ void WifiUI::refresh() { connectButtons->addButton(btn, i); - vlayout->addLayout(hlayout, 1); + main_layout->addLayout(hlayout, 1); // Don't add the last horizontal line if (i+1 < wifi->seen_networks.size()) { - vlayout->addWidget(horizontal_line(), 0); + main_layout->addWidget(horizontal_line(), 0); } i++; } - vlayout->addStretch(3); + main_layout->addStretch(3); } void WifiUI::handleButton(QAbstractButton* button) { diff --git a/selfdrive/ui/qt/offroad/networking.h b/selfdrive/ui/qt/offroad/networking.h index a9b3e2a325..fcadc44ee6 100644 --- a/selfdrive/ui/qt/offroad/networking.h +++ b/selfdrive/ui/qt/offroad/networking.h @@ -30,7 +30,7 @@ public: private: WifiManager *wifi = nullptr; - QVBoxLayout *vlayout; + QVBoxLayout* main_layout; QButtonGroup *connectButtons; bool tetheringEnabled; @@ -68,7 +68,7 @@ public: explicit Networking(QWidget* parent = 0, bool show_advanced = true); private: - QStackedLayout* s = nullptr; // nm_warning, wifiScreen, advanced + QStackedLayout* main_layout = nullptr; // nm_warning, wifiScreen, advanced QWidget* wifiScreen = nullptr; AdvancedNetworking* an = nullptr; bool ui_setup_complete = false; diff --git a/selfdrive/ui/qt/offroad/onboarding.cc b/selfdrive/ui/qt/offroad/onboarding.cc index 5443642645..ed0552d98c 100644 --- a/selfdrive/ui/qt/offroad/onboarding.cc +++ b/selfdrive/ui/qt/offroad/onboarding.cc @@ -58,7 +58,7 @@ void TermsPage::showEvent(QShowEvent *event) { return; } - QVBoxLayout *main_layout = new QVBoxLayout; + QVBoxLayout *main_layout = new QVBoxLayout(this); main_layout->setMargin(40); main_layout->setSpacing(40); @@ -93,7 +93,6 @@ void TermsPage::showEvent(QShowEvent *event) { buttons->addWidget(accept_btn); QObject::connect(accept_btn, &QPushButton::released, this, &TermsPage::acceptedTerms); - setLayout(main_layout); setStyleSheet(R"( QPushButton { padding: 50px; @@ -115,7 +114,7 @@ void DeclinePage::showEvent(QShowEvent *event) { return; } - QVBoxLayout *main_layout = new QVBoxLayout; + QVBoxLayout *main_layout = new QVBoxLayout(this); main_layout->setMargin(40); main_layout->setSpacing(40); @@ -143,7 +142,6 @@ void DeclinePage::showEvent(QShowEvent *event) { } }); - setLayout(main_layout); setStyleSheet(R"( QPushButton { padding: 50px; diff --git a/selfdrive/ui/qt/offroad/settings.cc b/selfdrive/ui/qt/offroad/settings.cc index 7095f1acc8..c845df5ce5 100644 --- a/selfdrive/ui/qt/offroad/settings.cc +++ b/selfdrive/ui/qt/offroad/settings.cc @@ -24,7 +24,7 @@ #include "selfdrive/ui/qt/util.h" TogglesPanel::TogglesPanel(QWidget *parent) : QWidget(parent) { - QVBoxLayout *toggles_list = new QVBoxLayout(); + QVBoxLayout *main_layout = new QVBoxLayout(this); QList toggles; @@ -93,25 +93,23 @@ TogglesPanel::TogglesPanel(QWidget *parent) : QWidget(parent) { record_toggle->setEnabled(!record_lock); for(ParamControl *toggle : toggles) { - if(toggles_list->count() != 0) { - toggles_list->addWidget(horizontal_line()); + if(main_layout->count() != 0) { + main_layout->addWidget(horizontal_line()); } - toggles_list->addWidget(toggle); + main_layout->addWidget(toggle); } - - setLayout(toggles_list); } DevicePanel::DevicePanel(QWidget* parent) : QWidget(parent) { - QVBoxLayout *device_layout = new QVBoxLayout; + QVBoxLayout *main_layout = new QVBoxLayout(this); Params params = Params(); QString dongle = QString::fromStdString(params.get("DongleId", false)); - device_layout->addWidget(new LabelControl("Dongle ID", dongle)); - device_layout->addWidget(horizontal_line()); + main_layout->addWidget(new LabelControl("Dongle ID", dongle)); + main_layout->addWidget(horizontal_line()); QString serial = QString::fromStdString(params.get("HardwareSerial", false)); - device_layout->addWidget(new LabelControl("Serial", serial)); + main_layout->addWidget(new LabelControl("Serial", serial)); // offroad-only buttons QList offroad_btns; @@ -164,9 +162,9 @@ DevicePanel::DevicePanel(QWidget* parent) : QWidget(parent) { }, "", this)); for(auto &btn : offroad_btns) { - device_layout->addWidget(horizontal_line()); + main_layout->addWidget(horizontal_line()); QObject::connect(parent, SIGNAL(offroadTransition(bool)), btn, SLOT(setEnabled(bool))); - device_layout->addWidget(btn); + main_layout->addWidget(btn); } // power buttons @@ -190,9 +188,8 @@ DevicePanel::DevicePanel(QWidget* parent) : QWidget(parent) { } }); - device_layout->addLayout(power_layout); + main_layout->addLayout(power_layout); - setLayout(device_layout); setStyleSheet(R"( QPushButton { padding: 0; @@ -204,8 +201,7 @@ DevicePanel::DevicePanel(QWidget* parent) : QWidget(parent) { } SoftwarePanel::SoftwarePanel(QWidget* parent) : QWidget(parent) { - QVBoxLayout *main_layout = new QVBoxLayout(this); - setLayout(main_layout); + setLayout(new QVBoxLayout()); setStyleSheet(R"(QLabel {font-size: 50px;})"); fs_watch = new QFileSystemWatcher(this); @@ -286,7 +282,8 @@ void SoftwarePanel::updateLabels() { QWidget * network_panel(QWidget * parent) { #ifdef QCOM - QVBoxLayout *layout = new QVBoxLayout; + QWidget *w = new QWidget(parent); + QVBoxLayout *layout = new QVBoxLayout(w); layout->setSpacing(30); // wifi + tethering buttons @@ -304,9 +301,6 @@ QWidget * network_panel(QWidget * parent) { layout->addWidget(new SshControl()); layout->addStretch(1); - - QWidget *w = new QWidget(parent); - w->setLayout(layout); #else Networking *w = new Networking(parent); #endif @@ -324,7 +318,8 @@ void SettingsWindow::showEvent(QShowEvent *event) { SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) { // setup two main layouts - QVBoxLayout *sidebar_layout = new QVBoxLayout(); + sidebar_widget = new QWidget; + QVBoxLayout *sidebar_layout = new QVBoxLayout(sidebar_widget); sidebar_layout->setMargin(0); panel_widget = new QStackedWidget(); panel_widget->setStyleSheet(R"( @@ -400,15 +395,12 @@ SettingsWindow::SettingsWindow(QWidget *parent) : QFrame(parent) { sidebar_layout->setContentsMargins(50, 50, 100, 50); // main settings layout, sidebar + main panel - QHBoxLayout *settings_layout = new QHBoxLayout(); + QHBoxLayout *main_layout = new QHBoxLayout(this); - sidebar_widget = new QWidget; - sidebar_widget->setLayout(sidebar_layout); sidebar_widget->setFixedWidth(500); - settings_layout->addWidget(sidebar_widget); - settings_layout->addWidget(panel_widget); + main_layout->addWidget(sidebar_widget); + main_layout->addWidget(panel_widget); - setLayout(settings_layout); setStyleSheet(R"( * { color: white; diff --git a/selfdrive/ui/qt/onroad.cc b/selfdrive/ui/qt/onroad.cc index ebea11d382..b4c9b89195 100644 --- a/selfdrive/ui/qt/onroad.cc +++ b/selfdrive/ui/qt/onroad.cc @@ -12,34 +12,31 @@ #endif OnroadWindow::OnroadWindow(QWidget *parent) : QWidget(parent) { - layout = new QStackedLayout(this); - layout->setStackingMode(QStackedLayout::StackAll); + main_layout = new QStackedLayout(this); + main_layout->setStackingMode(QStackedLayout::StackAll); // old UI on bottom nvg = new NvgWindow(this); QObject::connect(this, &OnroadWindow::update, nvg, &NvgWindow::update); - split = new QHBoxLayout(); + QWidget * split_wrapper = new QWidget; + split = new QHBoxLayout(split_wrapper); split->setContentsMargins(0, 0, 0, 0); split->setSpacing(0); split->addWidget(nvg); - - QWidget * split_wrapper = new QWidget; - split_wrapper->setLayout(split); - layout->addWidget(split_wrapper); + main_layout->addWidget(split_wrapper); alerts = new OnroadAlerts(this); alerts->setAttribute(Qt::WA_TransparentForMouseEvents, true); QObject::connect(this, &OnroadWindow::update, alerts, &OnroadAlerts::updateState); QObject::connect(this, &OnroadWindow::offroadTransitionSignal, alerts, &OnroadAlerts::offroadTransition); QObject::connect(this, &OnroadWindow::offroadTransitionSignal, this, &OnroadWindow::offroadTransition); - layout->addWidget(alerts); + main_layout->addWidget(alerts); // setup stacking order alerts->raise(); - setLayout(layout); setAttribute(Qt::WA_OpaquePaintEvent); } diff --git a/selfdrive/ui/qt/onroad.h b/selfdrive/ui/qt/onroad.h index c3baf01033..4907dc0a3e 100644 --- a/selfdrive/ui/qt/onroad.h +++ b/selfdrive/ui/qt/onroad.h @@ -86,7 +86,7 @@ public: private: OnroadAlerts *alerts; NvgWindow *nvg; - QStackedLayout *layout; + QStackedLayout *main_layout; QHBoxLayout* split; signals: diff --git a/selfdrive/ui/qt/setup/reset.cc b/selfdrive/ui/qt/setup/reset.cc index f7c9101cdd..74d94c2d6a 100644 --- a/selfdrive/ui/qt/setup/reset.cc +++ b/selfdrive/ui/qt/setup/reset.cc @@ -31,21 +31,21 @@ int main(int argc, char *argv[]) { QWidget window; setMainWindow(&window); - QVBoxLayout *layout = new QVBoxLayout(); - layout->setContentsMargins(125, 125, 125, 125); + QVBoxLayout *main_layout = new QVBoxLayout(&window); + main_layout->setContentsMargins(125, 125, 125, 125); QLabel *title = new QLabel("System Reset"); title->setStyleSheet(R"( font-weight: 500; font-size: 100px; )"); - layout->addWidget(title, 0, Qt::AlignTop); + main_layout->addWidget(title, 0, Qt::AlignTop); QLabel *body = new QLabel("System reset triggered. Press confirm to erase all content and settings. Press cancel to resume boot."); body->setWordWrap(true); body->setAlignment(Qt::AlignCenter); body->setStyleSheet("font-size: 65px;"); - layout->addWidget(body, 1, Qt::AlignCenter); + main_layout->addWidget(body, 1, Qt::AlignCenter); QHBoxLayout *btn_layout = new QHBoxLayout(); @@ -74,9 +74,8 @@ int main(int argc, char *argv[]) { } }); - layout->addLayout(btn_layout); + main_layout->addLayout(btn_layout); - window.setLayout(layout); window.setStyleSheet(R"( * { color: white; diff --git a/selfdrive/ui/qt/setup/setup.cc b/selfdrive/ui/qt/setup/setup.cc index 86723513c1..7ac78b01a4 100644 --- a/selfdrive/ui/qt/setup/setup.cc +++ b/selfdrive/ui/qt/setup/setup.cc @@ -56,7 +56,9 @@ QLabel * title_label(QString text) { } QWidget * Setup::build_page(QString title, QWidget *content, bool next, bool prev) { - QVBoxLayout *main_layout = new QVBoxLayout(); + QWidget *widget = new QWidget(); + QVBoxLayout *main_layout = new QVBoxLayout(widget); + main_layout->setMargin(50); main_layout->addWidget(title_label(title), 0, Qt::AlignLeft | Qt::AlignTop); @@ -77,9 +79,6 @@ QWidget * Setup::build_page(QString title, QWidget *content, bool next, bool pre } main_layout->addLayout(nav_layout, 0); - - QWidget *widget = new QWidget(); - widget->setLayout(main_layout); return widget; } @@ -96,7 +95,8 @@ QWidget * Setup::network_setup() { } QWidget * Setup::software_selection() { - QVBoxLayout *main_layout = new QVBoxLayout(); + QWidget *widget = new QWidget(); + QVBoxLayout *main_layout = new QVBoxLayout(widget); QPushButton *dashcam_btn = new QPushButton("Dashcam"); main_layout->addWidget(dashcam_btn); @@ -114,23 +114,19 @@ QWidget * Setup::software_selection() { this->download(input_url); } }); - - QWidget *widget = new QWidget(); - widget->setLayout(main_layout); return build_page("Choose Software", widget, false, true); } QWidget * Setup::downloading() { - QVBoxLayout *main_layout = new QVBoxLayout(); - main_layout->addWidget(title_label("Downloading..."), 0, Qt::AlignCenter); - QWidget *widget = new QWidget(); - widget->setLayout(main_layout); + QVBoxLayout *main_layout = new QVBoxLayout(widget); + main_layout->addWidget(title_label("Downloading..."), 0, Qt::AlignCenter); return widget; } QWidget * Setup::download_failed() { - QVBoxLayout *main_layout = new QVBoxLayout(); + QWidget *widget = new QWidget(); + QVBoxLayout *main_layout = new QVBoxLayout(widget); main_layout->setContentsMargins(50, 50, 50, 50); main_layout->addWidget(title_label("Download Failed"), 0, Qt::AlignLeft | Qt::AlignTop); @@ -157,9 +153,6 @@ QWidget * Setup::download_failed() { }); main_layout->addLayout(nav_layout, 0); - - QWidget *widget = new QWidget(); - widget->setLayout(main_layout); return widget; } diff --git a/selfdrive/ui/qt/setup/wifi.cc b/selfdrive/ui/qt/setup/wifi.cc index a087c531ce..08b1e32da6 100644 --- a/selfdrive/ui/qt/setup/wifi.cc +++ b/selfdrive/ui/qt/setup/wifi.cc @@ -18,7 +18,7 @@ void WifiSetup::finish() { } WifiSetup::WifiSetup(QWidget *parent) : QWidget(parent) { - QHBoxLayout *main_layout = new QHBoxLayout(); + QHBoxLayout *main_layout = new QHBoxLayout(this); QPushButton *finish_btn = new QPushButton("Exit"); finish_btn->setFixedSize(400, 200); @@ -29,10 +29,9 @@ WifiSetup::WifiSetup(QWidget *parent) : QWidget(parent) { QWidget* n = new Networking(this, true); // Next 5 lines to keep the same stylesheet on the networking widget - QLayout* backgroundLayout = new QVBoxLayout(); - backgroundLayout->addWidget(n); QWidget* q = new QWidget(); - q->setLayout(backgroundLayout); + QLayout* backgroundLayout = new QVBoxLayout(q); + backgroundLayout->addWidget(n); q->setStyleSheet(R"( * { background-color: #292929; @@ -40,7 +39,6 @@ WifiSetup::WifiSetup(QWidget *parent) : QWidget(parent) { )"); main_layout->addWidget(q, 1); - setLayout(main_layout); setStyleSheet(R"( * { background-color: black; diff --git a/selfdrive/ui/qt/spinner.cc b/selfdrive/ui/qt/spinner.cc index 822a8c9f8a..2404f3c982 100644 --- a/selfdrive/ui/qt/spinner.cc +++ b/selfdrive/ui/qt/spinner.cc @@ -54,7 +54,7 @@ void TrackWidget::paintEvent(QPaintEvent *event) { // Spinner Spinner::Spinner(QWidget *parent) : QWidget(parent) { - QGridLayout *main_layout = new QGridLayout(); + QGridLayout *main_layout = new QGridLayout(this); main_layout->setSpacing(0); main_layout->setMargin(200); @@ -71,7 +71,6 @@ Spinner::Spinner(QWidget *parent) : QWidget(parent) { progress_bar->setFixedHeight(20); main_layout->addWidget(progress_bar, 1, 0, Qt::AlignHCenter); - setLayout(main_layout); setStyleSheet(R"( Spinner { background-color: black; diff --git a/selfdrive/ui/qt/text.cc b/selfdrive/ui/qt/text.cc index 1e26208b3b..5d2012ea14 100644 --- a/selfdrive/ui/qt/text.cc +++ b/selfdrive/ui/qt/text.cc @@ -17,15 +17,15 @@ int main(int argc, char *argv[]) { Hardware::set_display_power(true); Hardware::set_brightness(65); - QGridLayout *layout = new QGridLayout; - layout->setMargin(50); + QGridLayout *main_layout = new QGridLayout(&window); + main_layout->setMargin(50); QLabel *label = new QLabel(argv[1]); label->setWordWrap(true); label->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::MinimumExpanding); ScrollView *scroll = new ScrollView(label); scroll->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); - layout->addWidget(scroll, 0, 0, Qt::AlignTop); + main_layout->addWidget(scroll, 0, 0, Qt::AlignTop); // Scroll to the bottom QObject::connect(scroll->verticalScrollBar(), &QAbstractSlider::rangeChanged, [=]() { @@ -42,9 +42,8 @@ int main(int argc, char *argv[]) { btn->setText("Exit"); QObject::connect(btn, &QPushButton::released, &a, &QApplication::quit); #endif - layout->addWidget(btn, 0, 0, Qt::AlignRight | Qt::AlignBottom); + main_layout->addWidget(btn, 0, 0, Qt::AlignRight | Qt::AlignBottom); - window.setLayout(layout); window.setStyleSheet(R"( * { outline: none; diff --git a/selfdrive/ui/qt/widgets/controls.cc b/selfdrive/ui/qt/widgets/controls.cc index 7cea41a182..1ba511ef5c 100644 --- a/selfdrive/ui/qt/widgets/controls.cc +++ b/selfdrive/ui/qt/widgets/controls.cc @@ -15,8 +15,8 @@ QFrame *horizontal_line(QWidget *parent) { } AbstractControl::AbstractControl(const QString &title, const QString &desc, const QString &icon, QWidget *parent) : QFrame(parent) { - QVBoxLayout *vlayout = new QVBoxLayout(); - vlayout->setMargin(0); + QVBoxLayout *main_layout = new QVBoxLayout(this); + main_layout->setMargin(0); hlayout = new QHBoxLayout; hlayout->setMargin(0); @@ -36,7 +36,7 @@ AbstractControl::AbstractControl(const QString &title, const QString &desc, cons title_label->setStyleSheet("font-size: 50px; font-weight: 400; text-align: left;"); hlayout->addWidget(title_label); - vlayout->addLayout(hlayout); + main_layout->addLayout(hlayout); // description if (!desc.isEmpty()) { @@ -45,7 +45,7 @@ AbstractControl::AbstractControl(const QString &title, const QString &desc, cons description->setStyleSheet("font-size: 40px; color:grey"); description->setWordWrap(true); description->setVisible(false); - vlayout->addWidget(description); + main_layout->addWidget(description); connect(title_label, &QPushButton::clicked, [=]() { if (!description->isVisible()) { @@ -55,7 +55,6 @@ AbstractControl::AbstractControl(const QString &title, const QString &desc, cons }); } - setLayout(vlayout); setStyleSheet("background-color: transparent;"); } diff --git a/selfdrive/ui/qt/widgets/drive_stats.cc b/selfdrive/ui/qt/widgets/drive_stats.cc index a0bca85115..c48aa1310a 100644 --- a/selfdrive/ui/qt/widgets/drive_stats.cc +++ b/selfdrive/ui/qt/widgets/drive_stats.cc @@ -65,6 +65,5 @@ DriveStats::DriveStats(QWidget* parent) : QWidget(parent) { RequestRepeater *repeater = new RequestRepeater(this, url, "ApiCache_DriveStats", 30); QObject::connect(repeater, &RequestRepeater::receivedResponse, this, &DriveStats::parseResponse); - setLayout(gl); setStyleSheet(R"(QLabel {font-size: 48px; font-weight: 500;})"); } diff --git a/selfdrive/ui/qt/widgets/input.cc b/selfdrive/ui/qt/widgets/input.cc index c3737ff0e4..a58ad1116a 100644 --- a/selfdrive/ui/qt/widgets/input.cc +++ b/selfdrive/ui/qt/widgets/input.cc @@ -6,9 +6,9 @@ #include "selfdrive/hardware/hw.h" InputDialog::InputDialog(const QString &prompt_text, QWidget *parent) : QDialog(parent) { - layout = new QVBoxLayout(); - layout->setContentsMargins(50, 50, 50, 50); - layout->setSpacing(20); + main_layout = new QVBoxLayout(this); + main_layout->setContentsMargins(50, 50, 50, 50); + main_layout->setSpacing(20); // build header QHBoxLayout *header_layout = new QHBoxLayout(); @@ -30,10 +30,10 @@ InputDialog::InputDialog(const QString &prompt_text, QWidget *parent) : QDialog( QObject::connect(cancel_btn, &QPushButton::released, this, &InputDialog::reject); QObject::connect(cancel_btn, &QPushButton::released, this, &InputDialog::cancel); - layout->addLayout(header_layout); + main_layout->addLayout(header_layout); // text box - layout->addSpacing(20); + main_layout->addSpacing(20); line = new QLineEdit(); line->setStyleSheet(R"( border: none; @@ -42,11 +42,11 @@ InputDialog::InputDialog(const QString &prompt_text, QWidget *parent) : QDialog( font-weight: 500; padding: 10px; )"); - layout->addWidget(line, 1, Qt::AlignTop); + main_layout->addWidget(line, 1, Qt::AlignTop); k = new Keyboard(this); QObject::connect(k, &Keyboard::emitButton, this, &InputDialog::handleInput); - layout->addWidget(k, 2, Qt::AlignBottom); + main_layout->addWidget(k, 2, Qt::AlignBottom); setStyleSheet(R"( * { @@ -55,7 +55,6 @@ InputDialog::InputDialog(const QString &prompt_text, QWidget *parent) : QDialog( } )"); - setLayout(layout); } QString InputDialog::getText(const QString &prompt, int minLength) { @@ -116,20 +115,20 @@ void InputDialog::setMinLength(int length) { ConfirmationDialog::ConfirmationDialog(const QString &prompt_text, const QString &confirm_text, const QString &cancel_text, QWidget *parent):QDialog(parent) { setWindowFlags(Qt::Popup); - layout = new QVBoxLayout(); - layout->setMargin(25); + main_layout = new QVBoxLayout(this); + main_layout->setMargin(25); prompt = new QLabel(prompt_text, this); prompt->setWordWrap(true); prompt->setAlignment(Qt::AlignHCenter); prompt->setStyleSheet(R"(font-size: 55px; font-weight: 400;)"); - layout->addWidget(prompt, 1, Qt::AlignTop | Qt::AlignHCenter); + main_layout->addWidget(prompt, 1, Qt::AlignTop | Qt::AlignHCenter); // cancel + confirm buttons QHBoxLayout *btn_layout = new QHBoxLayout(); btn_layout->setSpacing(20); btn_layout->addStretch(1); - layout->addLayout(btn_layout); + main_layout->addLayout(btn_layout); if (cancel_text.length()) { QPushButton* cancel_btn = new QPushButton(cancel_text); @@ -158,8 +157,6 @@ ConfirmationDialog::ConfirmationDialog(const QString &prompt_text, const QString background-color: #44444400; } )"); - - setLayout(layout); } bool ConfirmationDialog::alert(const QString &prompt_text, QWidget *parent) { diff --git a/selfdrive/ui/qt/widgets/input.h b/selfdrive/ui/qt/widgets/input.h index 4ffd0a9bbe..7b42595dc1 100644 --- a/selfdrive/ui/qt/widgets/input.h +++ b/selfdrive/ui/qt/widgets/input.h @@ -25,7 +25,7 @@ private: QLineEdit *line; Keyboard *k; QLabel *label; - QVBoxLayout *layout; + QVBoxLayout *main_layout; public slots: int exec() override; @@ -49,7 +49,7 @@ public: private: QLabel *prompt; - QVBoxLayout *layout; + QVBoxLayout *main_layout; public slots: int exec() override; diff --git a/selfdrive/ui/qt/widgets/keyboard.cc b/selfdrive/ui/qt/widgets/keyboard.cc index 1f81ba718f..5838febeb7 100644 --- a/selfdrive/ui/qt/widgets/keyboard.cc +++ b/selfdrive/ui/qt/widgets/keyboard.cc @@ -11,9 +11,9 @@ const int DEFAULT_STRETCH = 1; const int SPACEBAR_STRETCH = 3; KeyboardLayout::KeyboardLayout(QWidget* parent, const std::vector>& layout) : QWidget(parent) { - QVBoxLayout* vlayout = new QVBoxLayout; - vlayout->setMargin(0); - vlayout->setSpacing(35); + QVBoxLayout* main_layout = new QVBoxLayout(this); + main_layout->setMargin(0); + main_layout->setSpacing(35); QButtonGroup* btn_group = new QButtonGroup(this); QObject::connect(btn_group, SIGNAL(buttonClicked(QAbstractButton*)), parent, SLOT(handleButton(QAbstractButton*))); @@ -22,7 +22,7 @@ KeyboardLayout::KeyboardLayout(QWidget* parent, const std::vectorsetSpacing(25); - if (vlayout->count() == 1) { + if (main_layout->count() == 1) { hlayout->addSpacing(90); } @@ -33,11 +33,11 @@ KeyboardLayout::KeyboardLayout(QWidget* parent, const std::vectoraddWidget(btn, p == QString(" ") ? SPACEBAR_STRETCH : DEFAULT_STRETCH); } - if (vlayout->count() == 1) { + if (main_layout->count() == 1) { hlayout->addSpacing(90); } - vlayout->addLayout(hlayout); + main_layout->addLayout(hlayout); } setStyleSheet(R"( @@ -56,11 +56,10 @@ KeyboardLayout::KeyboardLayout(QWidget* parent, const std::vectorsetMargin(0); // lowercase @@ -99,7 +98,6 @@ Keyboard::Keyboard(QWidget *parent) : QFrame(parent) { }; main_layout->addWidget(new KeyboardLayout(this, specials)); - setLayout(main_layout); main_layout->setCurrentIndex(0); } diff --git a/selfdrive/ui/qt/widgets/offroad_alerts.cc b/selfdrive/ui/qt/widgets/offroad_alerts.cc index d067327b7b..9586ffb5f6 100644 --- a/selfdrive/ui/qt/widgets/offroad_alerts.cc +++ b/selfdrive/ui/qt/widgets/offroad_alerts.cc @@ -9,15 +9,14 @@ #include "selfdrive/hardware/hw.h" OffroadAlert::OffroadAlert(QWidget* parent) : QFrame(parent) { - QVBoxLayout *layout = new QVBoxLayout; - layout->setMargin(50); - layout->setSpacing(30); + QVBoxLayout *main_layout = new QVBoxLayout(this); + main_layout->setMargin(50); + main_layout->setSpacing(30); QWidget *alerts_widget = new QWidget(this); - alerts_layout = new QVBoxLayout; + alerts_layout = new QVBoxLayout(alerts_widget); alerts_layout->setMargin(0); alerts_layout->setSpacing(30); - alerts_widget->setLayout(alerts_layout); alerts_widget->setStyleSheet("background-color: transparent;"); // release notes @@ -27,14 +26,14 @@ OffroadAlert::OffroadAlert(QWidget* parent) : QFrame(parent) { releaseNotes.setAlignment(Qt::AlignTop); releaseNotesScroll = new ScrollView(&releaseNotes, this); - layout->addWidget(releaseNotesScroll); + main_layout->addWidget(releaseNotesScroll); alertsScroll = new ScrollView(alerts_widget, this); - layout->addWidget(alertsScroll); + main_layout->addWidget(alertsScroll); // bottom footer, dismiss + reboot buttons QHBoxLayout *footer_layout = new QHBoxLayout(); - layout->addLayout(footer_layout); + main_layout->addLayout(footer_layout); QPushButton *dismiss_btn = new QPushButton("Dismiss"); dismiss_btn->setFixedSize(400, 125); @@ -47,7 +46,6 @@ OffroadAlert::OffroadAlert(QWidget* parent) : QFrame(parent) { footer_layout->addWidget(&rebootBtn, 0, Qt::AlignBottom | Qt::AlignRight); QObject::connect(&rebootBtn, &QPushButton::released, [=]() { Hardware::reboot(); }); - setLayout(layout); setStyleSheet(R"( * { font-size: 48px; diff --git a/selfdrive/ui/qt/widgets/setup.cc b/selfdrive/ui/qt/widgets/setup.cc index 1333867ea1..db38b76e06 100644 --- a/selfdrive/ui/qt/widgets/setup.cc +++ b/selfdrive/ui/qt/widgets/setup.cc @@ -18,9 +18,8 @@ using qrcodegen::QrCode; PairingQRWidget::PairingQRWidget(QWidget* parent) : QWidget(parent) { qrCode = new QLabel; qrCode->setScaledContents(true); - QVBoxLayout* v = new QVBoxLayout; - v->addWidget(qrCode, 0, Qt::AlignCenter); - setLayout(v); + QVBoxLayout* main_layout = new QVBoxLayout(this); + main_layout->addWidget(qrCode, 0, Qt::AlignCenter); QTimer* timer = new QTimer(this); timer->start(30 * 1000); @@ -73,7 +72,7 @@ void PairingQRWidget::updateQrCode(const QString &text) { } PrimeUserWidget::PrimeUserWidget(QWidget* parent) : QWidget(parent) { - mainLayout = new QVBoxLayout; + mainLayout = new QVBoxLayout(this); mainLayout->setMargin(30); QLabel* commaPrime = new QLabel("COMMA PRIME"); @@ -94,7 +93,6 @@ PrimeUserWidget::PrimeUserWidget(QWidget* parent) : QWidget(parent) { points = new QLabel(); mainLayout->addWidget(points, 0, Qt::AlignTop); - setLayout(mainLayout); setStyleSheet(R"( QLabel { font-size: 70px; @@ -132,11 +130,11 @@ void PrimeUserWidget::replyFinished(const QString &response) { } PrimeAdWidget::PrimeAdWidget(QWidget* parent) : QWidget(parent) { - QVBoxLayout* vlayout = new QVBoxLayout; - vlayout->setMargin(30); - vlayout->setSpacing(15); + QVBoxLayout* main_layout = new QVBoxLayout(this); + main_layout->setMargin(30); + main_layout->setSpacing(15); - vlayout->addWidget(new QLabel("Upgrade now"), 1, Qt::AlignTop); + main_layout->addWidget(new QLabel("Upgrade now"), 1, Qt::AlignTop); QLabel* description = new QLabel("Become a comma prime member at my.comma.ai and get premium features!"); description->setStyleSheet(R"( @@ -144,16 +142,14 @@ PrimeAdWidget::PrimeAdWidget(QWidget* parent) : QWidget(parent) { color: #b8b8b8; )"); description->setWordWrap(true); - vlayout->addWidget(description, 2, Qt::AlignTop); + main_layout->addWidget(description, 2, Qt::AlignTop); QVector features = {"✓ REMOTE ACCESS", "✓ 14 DAYS OF STORAGE", "✓ DEVELOPER PERKS"}; for (auto &f: features) { QLabel* feature = new QLabel(f); feature->setStyleSheet(R"(font-size: 40px;)"); - vlayout->addWidget(feature, 0, Qt::AlignBottom); + main_layout->addWidget(feature, 0, Qt::AlignBottom); } - - setLayout(vlayout); } @@ -162,7 +158,8 @@ SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) { // Unpaired, registration prompt layout - QVBoxLayout* finishRegistationLayout = new QVBoxLayout; + QWidget* finishRegistration = new QWidget; + QVBoxLayout* finishRegistationLayout = new QVBoxLayout(finishRegistration); finishRegistationLayout->setMargin(30); QLabel* registrationDescription = new QLabel("Pair your device with the comma connect app"); @@ -186,13 +183,12 @@ SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) { finishRegistationLayout->addWidget(finishButton); QObject::connect(finishButton, &QPushButton::released, this, &SetupWidget::showQrCode); - QWidget* finishRegistration = new QWidget; - finishRegistration->setLayout(finishRegistationLayout); mainLayout->addWidget(finishRegistration); // Pairing QR code layout - QVBoxLayout* qrLayout = new QVBoxLayout; + QWidget* q = new QWidget; + QVBoxLayout* qrLayout = new QVBoxLayout(q); qrLayout->addSpacing(30); QLabel* qrLabel = new QLabel("Scan with comma connect!"); @@ -206,8 +202,6 @@ SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) { qrLayout->addWidget(new PairingQRWidget, 1); - QWidget* q = new QWidget; - q->setLayout(qrLayout); mainLayout->addWidget(q); primeAd = new PrimeAdWidget; @@ -218,9 +212,8 @@ SetupWidget::SetupWidget(QWidget* parent) : QFrame(parent) { mainLayout->setCurrentWidget(primeAd); - QVBoxLayout *layout = new QVBoxLayout; - layout->addWidget(mainLayout); - setLayout(layout); + QVBoxLayout *main_layout = new QVBoxLayout(this); + main_layout->addWidget(mainLayout); setStyleSheet(R"( SetupWidget { diff --git a/selfdrive/ui/qt/window.cc b/selfdrive/ui/qt/window.cc index 61af427eba..0eae99e495 100644 --- a/selfdrive/ui/qt/window.cc +++ b/selfdrive/ui/qt/window.cc @@ -3,7 +3,7 @@ #include "selfdrive/hardware/hw.h" MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { - main_layout = new QStackedLayout; + main_layout = new QStackedLayout(this); main_layout->setMargin(0); homeWindow = new HomeWindow(this); @@ -46,7 +46,6 @@ MainWindow::MainWindow(QWidget *parent) : QWidget(parent) { QFontDatabase::addApplicationFont("../assets/fonts/opensans_semibold.ttf"); // no outline to prevent the focus rectangle - setLayout(main_layout); setStyleSheet(R"( * { font-family: Inter;