UI: only show cell settings on non-prime connection (#25067)

* fix indentation

* add primeTypeChanged signal to uiState

* hide advanced networking toggles on prime type change

* switch between map settings on prime type change

* cleanup

* remove duplicate code, wait for signal

Co-authored-by: Cameron Clough <cameronjclough@gmail.com>
old-commit-hash: 06e283a750
taco
Adeeb Shihadeh 3 years ago committed by GitHub
parent 0f07fb6f2c
commit 6831f3499f
  1. 5
      selfdrive/ui/qt/maps/map_settings.cc
  2. 15
      selfdrive/ui/qt/offroad/networking.cc
  3. 3
      selfdrive/ui/qt/offroad/networking.h
  4. 4
      selfdrive/ui/qt/widgets/prime.cc
  5. 7
      selfdrive/ui/ui.cc
  6. 4
      selfdrive/ui/ui.h

@ -115,7 +115,9 @@ MapPanel::MapPanel(QWidget* parent) : QWidget(parent) {
stack->addWidget(main_widget);
stack->addWidget(no_prime_widget);
stack->setCurrentIndex(uiState()->prime_type ? 0 : 1);
connect(uiState(), &UIState::primeTypeChanged, [=](int prime_type) {
stack->setCurrentIndex(prime_type ? 0 : 1);
});
QVBoxLayout *wrapper = new QVBoxLayout(this);
wrapper->addWidget(stack);
@ -194,7 +196,6 @@ void MapPanel::parseResponse(const QString &response, bool success) {
}
void MapPanel::refresh() {
stack->setCurrentIndex(uiState()->prime_type ? 0 : 1);
if (cur_destinations == prev_destinations) return;
QJsonDocument doc = QJsonDocument::fromJson(cur_destinations.trimmed().toUtf8());

@ -8,9 +8,11 @@
#include <QPainter>
#include <QScrollBar>
#include "selfdrive/ui/ui.h"
#include "selfdrive/ui/qt/util.h"
#include "selfdrive/ui/qt/qt_window.h"
#include "selfdrive/ui/qt/widgets/controls.h"
#include "selfdrive/ui/qt/widgets/prime.h"
#include "selfdrive/ui/qt/widgets/scrollview.h"
@ -150,7 +152,7 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid
// Roaming toggle
const bool roamingEnabled = params.getBool("GsmRoaming");
ToggleControl *roamingToggle = new ToggleControl(tr("Enable Roaming"), "", "", roamingEnabled);
roamingToggle = new ToggleControl(tr("Enable Roaming"), "", "", roamingEnabled);
QObject::connect(roamingToggle, &ToggleControl::toggleFlipped, [=](bool state) {
params.putBool("GsmRoaming", state);
wifi->updateGsmSettings(state, QString::fromStdString(params.get("GsmApn")), params.getBool("GsmMetered"));
@ -158,7 +160,7 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid
list->addItem(roamingToggle);
// APN settings
ButtonControl *editApnButton = new ButtonControl(tr("APN Setting"), tr("EDIT"));
editApnButton = new ButtonControl(tr("APN Setting"), tr("EDIT"));
connect(editApnButton, &ButtonControl::clicked, [=]() {
const QString cur_apn = QString::fromStdString(params.get("GsmApn"));
QString apn = InputDialog::getText(tr("Enter APN"), this, tr("leave blank for automatic configuration"), false, -1, cur_apn).trimmed();
@ -174,7 +176,7 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid
// Metered toggle
const bool metered = params.getBool("GsmMetered");
ToggleControl *meteredToggle = new ToggleControl(tr("Cellular Metered"), tr("Prevent large data uploads when on a metered connection"), "", metered);
meteredToggle = new ToggleControl(tr("Cellular Metered"), tr("Prevent large data uploads when on a metered connection"), "", metered);
QObject::connect(meteredToggle, &SshToggle::toggleFlipped, [=](bool state) {
params.putBool("GsmMetered", state);
wifi->updateGsmSettings(params.getBool("GsmRoaming"), QString::fromStdString(params.get("GsmApn")), state);
@ -184,6 +186,13 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid
// Set initial config
wifi->updateGsmSettings(roamingEnabled, QString::fromStdString(params.get("GsmApn")), metered);
connect(uiState(), &UIState::primeTypeChanged, this, [=](int prime_type) {
bool gsmVisible = prime_type == PrimeType::NONE || prime_type == PrimeType::LITE;
roamingToggle->setVisible(gsmVisible);
editApnButton->setVisible(gsmVisible);
meteredToggle->setVisible(gsmVisible);
});
main_layout->addWidget(new ScrollView(list, this));
main_layout->addStretch(1);
}

@ -40,6 +40,9 @@ public:
private:
LabelControl* ipLabel;
ToggleControl* tetheringToggle;
ToggleControl* roamingToggle;
ButtonControl* editApnButton;
ToggleControl* meteredToggle;
WifiManager* wifi = nullptr;
Params params;

@ -312,11 +312,7 @@ void SetupWidget::replyFinished(const QString &response, bool success) {
QJsonObject json = doc.object();
int prime_type = json["prime_type"].toInt();
if (uiState()->prime_type != prime_type) {
uiState()->prime_type = prime_type;
Params().put("PrimeType", std::to_string(prime_type));
}
if (!json["is_paired"].toBool()) {
mainLayout->setCurrentIndex(0);

@ -201,6 +201,13 @@ void UIState::updateStatus() {
started_prev = scene.started;
emit offroadTransition(!scene.started);
}
// Handle prime type change
if (prime_type != prime_type_prev) {
prime_type_prev = prime_type;
emit primeTypeChanged(prime_type);
Params().put("PrimeType", std::to_string(prime_type));
}
}
UIState::UIState(QObject *parent) : QObject(parent) {

@ -126,7 +126,7 @@ public:
UIScene scene = {};
bool awake;
int prime_type = 0;
int prime_type;
QString language;
QTransform car_space_transform;
@ -135,6 +135,7 @@ public:
signals:
void uiUpdate(const UIState &s);
void offroadTransition(bool offroad);
void primeTypeChanged(int prime_type);
private slots:
void update();
@ -142,6 +143,7 @@ private slots:
private:
QTimer *timer;
bool started_prev = false;
int prime_type_prev = -1;
};
UIState *uiState();

Loading…
Cancel
Save