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. 20
      selfdrive/ui/qt/offroad/wifiManager.cc
  5. 6
      selfdrive/ui/qt/widgets/prime.cc
  6. 7
      selfdrive/ui/ui.cc
  7. 4
      selfdrive/ui/ui.h

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

@ -8,9 +8,11 @@
#include <QPainter> #include <QPainter>
#include <QScrollBar> #include <QScrollBar>
#include "selfdrive/ui/ui.h"
#include "selfdrive/ui/qt/util.h" #include "selfdrive/ui/qt/util.h"
#include "selfdrive/ui/qt/qt_window.h" #include "selfdrive/ui/qt/qt_window.h"
#include "selfdrive/ui/qt/widgets/controls.h" #include "selfdrive/ui/qt/widgets/controls.h"
#include "selfdrive/ui/qt/widgets/prime.h"
#include "selfdrive/ui/qt/widgets/scrollview.h" #include "selfdrive/ui/qt/widgets/scrollview.h"
@ -150,7 +152,7 @@ AdvancedNetworking::AdvancedNetworking(QWidget* parent, WifiManager* wifi): QWid
// Roaming toggle // Roaming toggle
const bool roamingEnabled = params.getBool("GsmRoaming"); 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) { QObject::connect(roamingToggle, &ToggleControl::toggleFlipped, [=](bool state) {
params.putBool("GsmRoaming", state); params.putBool("GsmRoaming", state);
wifi->updateGsmSettings(state, QString::fromStdString(params.get("GsmApn")), params.getBool("GsmMetered")); 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); list->addItem(roamingToggle);
// APN settings // APN settings
ButtonControl *editApnButton = new ButtonControl(tr("APN Setting"), tr("EDIT")); editApnButton = new ButtonControl(tr("APN Setting"), tr("EDIT"));
connect(editApnButton, &ButtonControl::clicked, [=]() { connect(editApnButton, &ButtonControl::clicked, [=]() {
const QString cur_apn = QString::fromStdString(params.get("GsmApn")); 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(); 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 // Metered toggle
const bool metered = params.getBool("GsmMetered"); 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) { QObject::connect(meteredToggle, &SshToggle::toggleFlipped, [=](bool state) {
params.putBool("GsmMetered", state); params.putBool("GsmMetered", state);
wifi->updateGsmSettings(params.getBool("GsmRoaming"), QString::fromStdString(params.get("GsmApn")), 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 // Set initial config
wifi->updateGsmSettings(roamingEnabled, QString::fromStdString(params.get("GsmApn")), metered); 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->addWidget(new ScrollView(list, this));
main_layout->addStretch(1); main_layout->addStretch(1);
} }

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

@ -415,16 +415,16 @@ void WifiManager::addTetheringConnection() {
} }
void WifiManager::tetheringActivated(QDBusPendingCallWatcher *call) { void WifiManager::tetheringActivated(QDBusPendingCallWatcher *call) {
int prime_type = uiState()->prime_type; int prime_type = uiState()->prime_type;
int ipv4_forward = (prime_type == PrimeType::NONE || prime_type == PrimeType::LITE); int ipv4_forward = (prime_type == PrimeType::NONE || prime_type == PrimeType::LITE);
if (!ipv4_forward) { if (!ipv4_forward) {
QTimer::singleShot(5000, this, [=] { QTimer::singleShot(5000, this, [=] {
qWarning() << "net.ipv4.ip_forward = 0"; qWarning() << "net.ipv4.ip_forward = 0";
std::system("sudo sysctl net.ipv4.ip_forward=0"); std::system("sudo sysctl net.ipv4.ip_forward=0");
}); });
} }
call->deleteLater(); call->deleteLater();
} }
void WifiManager::setTetheringEnabled(bool enabled) { void WifiManager::setTetheringEnabled(bool enabled) {

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

@ -201,6 +201,13 @@ void UIState::updateStatus() {
started_prev = scene.started; started_prev = scene.started;
emit offroadTransition(!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) { UIState::UIState(QObject *parent) : QObject(parent) {

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

Loading…
Cancel
Save