diff --git a/net-view/operation/netmanager.cpp b/net-view/operation/netmanager.cpp index f8118abb..1ac41406 100644 --- a/net-view/operation/netmanager.cpp +++ b/net-view/operation/netmanager.cpp @@ -204,6 +204,7 @@ NetManagerPrivate::NetManagerPrivate(NetManager *manager) , m_autoAddConnection(false) , m_managerThread(new NetManagerThreadPrivate) , m_passwordRequestData(nullptr) + , m_supportWireless(false) , q_ptr(manager) { m_root->updateenabled(false); @@ -225,6 +226,7 @@ NetManagerPrivate::NetManagerPrivate(NetManager *manager) connect(q_ptr, &NetManager::languageChange, this, &NetManagerPrivate::retranslateUi); connect(m_managerThread, &NetManagerThreadPrivate::toControlCenter, q_ptr, &NetManager::toControlCenter, Qt::QueuedConnection); connect(m_managerThread, &NetManagerThreadPrivate::netCheckAvailableChanged, q_ptr, &NetManager::netCheckAvailableChanged, Qt::QueuedConnection); + connect(m_managerThread, &NetManagerThreadPrivate::supportWirelessChanged, this, &NetManagerPrivate::onSupportWirelessChanged, Qt::QueuedConnection); } NetManagerPrivate::~NetManagerPrivate() @@ -877,6 +879,11 @@ void NetManagerPrivate::onItemDestroyed(QObject *obj) m_dataMap.remove(obj->objectName()); } +void NetManagerPrivate::onSupportWirelessChanged(bool supportWireless) +{ + m_supportWireless = supportWireless; +} + void NetManagerPrivate::setDeviceEnabled(const QString &id, bool enabled) { NetItemPrivate *item = findItem(id); @@ -1010,7 +1017,7 @@ void NetManagerPrivate::updateAirplaneMode(bool enabled) Q_Q(NetManager); Q_EMIT q->airplaneModeChanged(m_airplaneMode); } - updateItemVisible("NetAirplaneModeTipsItem", enabled); + updateItemVisible("NetAirplaneModeTipsItem", enabled && m_supportWireless); if (enabled) { updateItemVisible("NetWirelessDisabledItem", false); updateItemVisible("NetWiredDisabledItem", false); diff --git a/net-view/operation/private/netmanager_p.h b/net-view/operation/private/netmanager_p.h index 3d77af0b..0bd14364 100644 --- a/net-view/operation/private/netmanager_p.h +++ b/net-view/operation/private/netmanager_p.h @@ -61,6 +61,7 @@ protected Q_SLOTS: void clearPasswordRequest(const QString &id); void retranslateUi(); void onItemDestroyed(QObject *obj); + void onSupportWirelessChanged(bool supportWireless); protected: void setDeviceEnabled(const QString &id, bool enabled); @@ -92,6 +93,7 @@ protected Q_SLOTS: QString m_showInputId; int m_deviceCount[DeviceItemCount]; + bool m_supportWireless; NetManager *q_ptr; Q_DECLARE_PUBLIC(NetManager) diff --git a/net-view/operation/private/netmanagerthreadprivate.cpp b/net-view/operation/private/netmanagerthreadprivate.cpp index 7c17b171..f9aa83cb 100644 --- a/net-view/operation/private/netmanagerthreadprivate.cpp +++ b/net-view/operation/private/netmanagerthreadprivate.cpp @@ -98,6 +98,7 @@ NetManagerThreadPrivate::NetManagerThreadPrivate() , m_netCheckAvailable(false) , m_isSleeping(false) , m_showPageTimer(nullptr) + , m_supportWireless(false) { moveToThread(m_thread); m_thread->start(); @@ -1941,6 +1942,7 @@ void NetManagerThreadPrivate::onDeviceAdded(QList devices) } } updateDSLEnabledable(); + updateSupportWireless(); } void NetManagerThreadPrivate::onDeviceRemoved(QList devices) @@ -1953,6 +1955,7 @@ void NetManagerThreadPrivate::onDeviceRemoved(QList devices updateDetails(); } updateDSLEnabledable(); + updateSupportWireless(); } void NetManagerThreadPrivate::onConnectivityChanged() @@ -2994,6 +2997,24 @@ NetworkManager::WirelessSecuritySetting::KeyMgmt NetManagerThreadPrivate::getKey return keyMgmt; } +void NetManagerThreadPrivate::updateSupportWireless() +{ + bool supportWireless = false; + QList devices = NetworkController::instance()->devices(); + for (dde::network::NetworkDeviceBase *device : devices) { + if (device->deviceType() != dde::network::DeviceType::Wireless) + continue; + + supportWireless = true; + break; + } + + if (m_supportWireless != supportWireless) { + m_supportWireless = supportWireless; + Q_EMIT supportWirelessChanged(m_supportWireless); + } +} + NetType::NetDeviceStatus NetManagerThreadPrivate::toNetDeviceStatus(ConnectionStatus status) { switch (status) { diff --git a/net-view/operation/private/netmanagerthreadprivate.h b/net-view/operation/private/netmanagerthreadprivate.h index 16bc3b77..2bd803e4 100644 --- a/net-view/operation/private/netmanagerthreadprivate.h +++ b/net-view/operation/private/netmanagerthreadprivate.h @@ -107,6 +107,7 @@ class NetManagerThreadPrivate : public QObject // clang-format on void toControlCenter(); void netCheckAvailableChanged(const bool &netCheckAvailable); + void supportWirelessChanged(bool supportWireless); public Q_SLOTS: void setDeviceEnabled(const QString &id, bool enabled); @@ -257,6 +258,8 @@ protected Q_SLOTS: QString connectionSuffixNum(const QString &matchConnName, const QString &name = QString(), NetworkManager::Connection *exception = nullptr); NetworkManager::WirelessSecuritySetting::KeyMgmt getKeyMgmtByAp(NetworkManager::AccessPoint *ap); + void updateSupportWireless(); + static NetType::NetDeviceStatus toNetDeviceStatus(ConnectionStatus status); static NetType::NetConnectionStatus toNetConnectionStatus(ConnectionStatus status); static NetType::NetDeviceStatus deviceStatus(NetworkDeviceBase *device); @@ -290,6 +293,7 @@ protected Q_SLOTS: QString m_showPageCmd; QTimer *m_showPageTimer; QString m_newVPNuuid; + bool m_supportWireless; }; } // namespace network