diff --git a/selfdrive/assets/offroad/icon_close.svg b/selfdrive/assets/offroad/icon_close.svg new file mode 100644 index 000000000..4c063371a --- /dev/null +++ b/selfdrive/assets/offroad/icon_close.svg @@ -0,0 +1,4 @@ + + + + diff --git a/selfdrive/assets/offroad/icon_lock_closed.svg b/selfdrive/assets/offroad/icon_lock_closed.svg new file mode 100644 index 000000000..b78709740 --- /dev/null +++ b/selfdrive/assets/offroad/icon_lock_closed.svg @@ -0,0 +1,4 @@ + + + + diff --git a/selfdrive/ui/qt/offroad/networking.cc b/selfdrive/ui/qt/offroad/networking.cc index e5ea703b4..ebcb10e31 100644 --- a/selfdrive/ui/qt/offroad/networking.cc +++ b/selfdrive/ui/qt/offroad/networking.cc @@ -206,12 +206,37 @@ void WifiUI::refresh() { int i = 0; for (Network &network : wifi->seen_networks) { QHBoxLayout *hlayout = new QHBoxLayout; - hlayout->addSpacing(50); QLabel *ssid_label = new QLabel(QString::fromUtf8(network.ssid)); ssid_label->setStyleSheet("font-size: 55px;"); hlayout->addWidget(ssid_label, 1, Qt::AlignLeft); + if (wifi->isKnownNetwork(network.ssid)) { + QPushButton *forgetBtn = new QPushButton(); + QPixmap pix("../assets/offroad/icon_close.svg"); + + forgetBtn->setIcon(QIcon(pix)); + forgetBtn->setIconSize(QSize(35, 35)); + forgetBtn->setStyleSheet("QPushButton { background-color: #E22C2C; }"); + forgetBtn->setFixedSize(100, 90); + + QObject::connect(forgetBtn, &QPushButton::released, [=]() { + if (ConfirmationDialog::confirm("Are you sure you want to forget " + QString::fromUtf8(network.ssid) + "?", this)) { + wifi->forgetConnection(network.ssid); + } + }); + + hlayout->addWidget(forgetBtn, 0, Qt::AlignRight); + } else if (network.security_type == SecurityType::WPA) { + QLabel *lockIcon = new QLabel(); + QPixmap pix("../assets/offroad/icon_lock_closed.svg"); + lockIcon->setPixmap(pix.scaledToWidth(35, Qt::SmoothTransformation)); + lockIcon->setSizePolicy(QSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed)); + lockIcon->setStyleSheet("QLabel { margin: 0px; padding-left: 15px; padding-right: 15px; }"); + + hlayout->addWidget(lockIcon, 0, Qt::AlignRight); + } + // strength indicator unsigned int strength_scale = network.strength / 17; hlayout->addWidget(new NetworkStrengthWidget(strength_scale), 0, Qt::AlignRight); diff --git a/selfdrive/ui/qt/offroad/wifiManager.cc b/selfdrive/ui/qt/offroad/wifiManager.cc index 0588cbd56..a29fe1a44 100644 --- a/selfdrive/ui/qt/offroad/wifiManager.cc +++ b/selfdrive/ui/qt/offroad/wifiManager.cc @@ -213,7 +213,7 @@ void WifiManager::connect(const Network &n, const QString &password) { void WifiManager::connect(const Network &n, const QString &username, const QString &password) { connecting_to_network = n.ssid; // disconnect(); - forgetNetwork(n.ssid); //Clear all connections that may already exist to the network we are connecting + forgetConnection(n.ssid); //Clear all connections that may already exist to the network we are connecting connect(n.ssid, username, password, n.security_type); } @@ -283,7 +283,7 @@ bool WifiManager::isKnownNetwork(const QString &ssid) { return !pathFromSsid(ssid).path().isEmpty(); } -void WifiManager::forgetNetwork(const QString &ssid) { +void WifiManager::forgetConnection(const QString &ssid) { QDBusObjectPath path = pathFromSsid(ssid); if (!path.path().isEmpty()) { QDBusInterface nm2(nm_service, path.path(), nm_settings_conn_iface, bus); @@ -480,7 +480,7 @@ bool WifiManager::tetheringEnabled() { void WifiManager::changeTetheringPassword(const QString &newPassword) { tetheringPassword = newPassword; if (isKnownNetwork(tethering_ssid.toUtf8())) { - forgetNetwork(tethering_ssid.toUtf8()); + forgetConnection(tethering_ssid.toUtf8()); } addTetheringConnection(); } diff --git a/selfdrive/ui/qt/offroad/wifiManager.h b/selfdrive/ui/qt/offroad/wifiManager.h index 31b128863..7aac7025d 100644 --- a/selfdrive/ui/qt/offroad/wifiManager.h +++ b/selfdrive/ui/qt/offroad/wifiManager.h @@ -35,6 +35,7 @@ public: QString ipv4_address; void refreshNetworks(); + void forgetConnection(const QString &ssid); bool isKnownNetwork(const QString &ssid); void connect(const Network &ssid); @@ -66,7 +67,6 @@ private: void connect(const QByteArray &ssid, const QString &username, const QString &password, SecurityType security_type); QString get_active_ap(); void deactivateConnection(const QString &ssid); - void forgetNetwork(const QString &ssid); QVector get_active_connections(); uint get_wifi_device_state(); QByteArray get_property(const QString &network_path, const QString &property);