mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-07-19 20:02:04 +08:00
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>
This commit is contained in:
@@ -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;
|
||||
|
||||
|
||||
@@ -415,16 +415,16 @@ void WifiManager::addTetheringConnection() {
|
||||
}
|
||||
|
||||
void WifiManager::tetheringActivated(QDBusPendingCallWatcher *call) {
|
||||
int prime_type = uiState()->prime_type;
|
||||
int ipv4_forward = (prime_type == PrimeType::NONE || prime_type == PrimeType::LITE);
|
||||
int prime_type = uiState()->prime_type;
|
||||
int ipv4_forward = (prime_type == PrimeType::NONE || prime_type == PrimeType::LITE);
|
||||
|
||||
if (!ipv4_forward) {
|
||||
QTimer::singleShot(5000, this, [=] {
|
||||
qWarning() << "net.ipv4.ip_forward = 0";
|
||||
std::system("sudo sysctl net.ipv4.ip_forward=0");
|
||||
});
|
||||
}
|
||||
call->deleteLater();
|
||||
if (!ipv4_forward) {
|
||||
QTimer::singleShot(5000, this, [=] {
|
||||
qWarning() << "net.ipv4.ip_forward = 0";
|
||||
std::system("sudo sysctl net.ipv4.ip_forward=0");
|
||||
});
|
||||
}
|
||||
call->deleteLater();
|
||||
}
|
||||
|
||||
void WifiManager::setTetheringEnabled(bool enabled) {
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
uiState()->prime_type = 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) {
|
||||
|
||||
+3
-1
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user