add connectionUpdate signal && getWirelessActiveConnection

This commit is contained in:
jzxc95 2021-08-20 10:12:10 +08:00
parent c8fb25edee
commit c3b54fafaf
6 changed files with 119 additions and 51 deletions

View File

@ -36,6 +36,7 @@ KyWirelessNetItem::KyWirelessNetItem(NetworkManager::WirelessNetwork::Ptr net)
m_connName = "";
m_connDbusPath = "";
m_secuType = "";
m_device = "";
init(net);
}
@ -57,6 +58,7 @@ void KyWirelessNetItem::init(NetworkManager::WirelessNetwork::Ptr net)
NetworkManager::AccessPoint::WpaFlags rsnFlag = net->referenceAccessPoint()->rsnFlags();
m_secuType = enumToQstring(cap, wpaFlag, rsnFlag);
m_bssid = net->referenceAccessPoint()->hardwareAddress();
m_device = net->device();
initInfoBySsid();
}
@ -71,19 +73,13 @@ void KyWirelessNetItem::initInfoBySsid()
}
NetworkManager::WirelessSetting::Ptr wifi_sett
= settings->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>();
if (wifi_sett->ssid() == m_NetSsid)
QString devName = m_networkResourceInstance->findDeviceUni(m_device)->interfaceName();
if (wifi_sett->ssid() == m_NetSsid && (settings->interfaceName().compare(devName) == 0 || settings->interfaceName().isEmpty()))
{
m_connectUuid = settings->uuid();
m_connName = conn->name();
m_connDbusPath = conn->path();
m_isConfigured = true;
if(wifi_sett->ssid() == "NewWifi")
{
NetworkManager::WirelessSecuritySetting::Ptr security_sett
= settings->setting(NetworkManager::Setting::WirelessSecurity).dynamicCast<NetworkManager::WirelessSecuritySetting>();
qDebug() << security_sett->keyMgmt();
}
return;
}
}

View File

@ -34,6 +34,7 @@ public:
private:
KyNetworkResourceManager *m_networkResourceInstance = nullptr;
QString m_device;
};

View File

@ -5,6 +5,7 @@ KyWirelessNetResource::KyWirelessNetResource(QObject *parent)
{
qDebug()<<"KyWirelessNetResource";
m_networkResourceInstance = KyNetworkResourceManager::getInstance();
m_connectResource = new KyConnectResourse(this);
kyWirelessNetItemListInit();
@ -14,8 +15,9 @@ KyWirelessNetResource::KyWirelessNetResource(QObject *parent)
connect(m_networkResourceInstance, &KyNetworkResourceManager::wifiNetworkPropertyChange, this, &KyWirelessNetResource::onWifiNetworkPropertyChange);
connect(m_networkResourceInstance, &KyNetworkResourceManager::wifiNetworkDeviceDisappear, this, &KyWirelessNetResource::onWifiNetworkDeviceDisappear);
//connect(m_networkResourceInstance, &KyNetworkResourceManager::connectionAdd, this, &KyWirelessNetResource::onConnectionAdd);
connect(m_networkResourceInstance, &KyNetworkResourceManager::connectionRemove, this, &KyWirelessNetResource::onConnectionRemove);
connect(m_connectResource, &KyConnectResourse::connectionAdd, this, &KyWirelessNetResource::onConnectionAdd);
connect(m_connectResource, &KyConnectResourse::connectionRemove, this, &KyWirelessNetResource::onConnectionRemove);
connect(m_connectResource, &KyConnectResourse::connectionUpdate, this, &KyWirelessNetResource::onConnectionUpdate);
}
@ -26,7 +28,7 @@ KyWirelessNetResource::~KyWirelessNetResource()
bool KyWirelessNetResource::getAllDeviceWifiNetwork(QMap<QString,QList<KyWirelessNetItem> > &map)
{
onWifiNetworkDeviceDisappear();
// onWifiNetworkDeviceDisappear();
if (m_WifiNetworkList.isEmpty()) {
return false;
} else {
@ -38,7 +40,7 @@ bool KyWirelessNetResource::getAllDeviceWifiNetwork(QMap<QString,QList<KyWireles
bool KyWirelessNetResource::getDeviceWifiNetwork(QString devIfaceName, QList<KyWirelessNetItem> &wirelessNetResource)
{
onWifiNetworkDeviceDisappear();
// onWifiNetworkDeviceDisappear();
if (!m_WifiNetworkList.contains(devIfaceName)) {
return false;
@ -50,7 +52,7 @@ bool KyWirelessNetResource::getDeviceWifiNetwork(QString devIfaceName, QList<KyW
bool KyWirelessNetResource::getWifiNetwork(QString &devIfaceName, QString &ssid, KyWirelessNetItem &wirelessNetResource)
{
onWifiNetworkDeviceDisappear();
// onWifiNetworkDeviceDisappear();
if (!m_WifiNetworkList.contains(devIfaceName)) {
return false;
@ -66,9 +68,10 @@ bool KyWirelessNetResource::getWifiNetwork(QString &devIfaceName, QString &ssid,
return false;
}
bool KyWirelessNetResource::getWirelessActiveConnection(QMap<QString,QStringList> &map)
void KyWirelessNetResource::getWirelessActiveConnection(NetworkManager::ActiveConnection::State state, QMap<QString,QStringList> &map)
{
int index = 0;
map.clear();
NetworkManager::ActiveConnection::List activeConnectionList;
map.clear();
@ -76,8 +79,7 @@ bool KyWirelessNetResource::getWirelessActiveConnection(QMap<QString,QStringList
activeConnectionList = m_networkResourceInstance->m_activeConns;
if (activeConnectionList.isEmpty())
{
map.clear();
return true;
return;
}
NetworkManager::ActiveConnection::Ptr activeConnectionPtr = nullptr;
@ -88,7 +90,7 @@ bool KyWirelessNetResource::getWirelessActiveConnection(QMap<QString,QStringList
{
continue;
}
if (NetworkManager::ActiveConnection::Activated != activeConnectionPtr->state())
if (state != activeConnectionPtr->state())
{
continue;
}
@ -102,7 +104,7 @@ bool KyWirelessNetResource::getWirelessActiveConnection(QMap<QString,QStringList
map.insert(ifaceName,list);
}
}
return true;
return;
}
QString KyWirelessNetResource::getDeviceIFace(NetworkManager::ActiveConnection::Ptr actConn,
@ -114,7 +116,8 @@ QString KyWirelessNetResource::getDeviceIFace(NetworkManager::ActiveConnection::
NetworkManager::Connection::Ptr conn = actConn->connection();
NetworkManager::ConnectionSettings::Ptr sett = conn->settings();
wirelessNetResourcessid = sett->id();
NetworkManager::WirelessSetting::Ptr wireless_sett = sett->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>();
wirelessNetResourcessid = wireless_sett->ssid();
return sett->interfaceName();
}
@ -410,13 +413,13 @@ bool KyWirelessNetResource::getEnterPriseInfoTtls(QString &uuid, KyEapMethodTtls
}
void KyWirelessNetResource::onConnectionAdd(NetworkManager::Connection::Ptr conn)
void KyWirelessNetResource::onConnectionAdd(QString uuid)
{
qDebug() << "onConnectionAdd add " << conn->name();
QString devIfaceName;
QString ssid;
qDebug() << "onConnectionAdd " << uuid;
NetworkManager::Connection::Ptr conn = m_networkResourceInstance->getConnect(uuid);
if (conn.isNull())
{
qDebug() << "onConnectionAdd can not find connection" << uuid;
return;
}
NetworkManager::ConnectionSettings::Ptr sett= conn->settings();
@ -425,15 +428,14 @@ void KyWirelessNetResource::onConnectionAdd(NetworkManager::Connection::Ptr conn
return;
}
NetworkManager::WirelessSetting::Ptr wireless_sett = sett->setting(NetworkManager::Setting::Wireless).dynamicCast<NetworkManager::WirelessSetting>();
bool isFind = false;
QMap<QString, QString> map;
map.clear();
QMap<QString, QList<KyWirelessNetItem> >::iterator iter = m_WifiNetworkList.begin();
while (iter != m_WifiNetworkList.end())
{
for(int i = 0; i < iter.value().size(); i++)
{
if (iter.value().at(i).m_NetSsid == wireless_sett->ssid())
{
isFind = true;
while (iter != m_WifiNetworkList.end()) {
for(int i = 0; i < iter.value().size(); i++) {
if (iter.value().at(i).m_NetSsid == wireless_sett->ssid() && (sett->interfaceName() == iter.key() || sett->interfaceName().isEmpty())) {
QString devIfaceName;
QString ssid;
m_WifiNetworkList[iter.key()][i].m_isConfigured = true;
m_WifiNetworkList[iter.key()][i].m_connName = conn->name();
m_WifiNetworkList[iter.key()][i].m_connectUuid = conn->uuid();
@ -441,22 +443,27 @@ void KyWirelessNetResource::onConnectionAdd(NetworkManager::Connection::Ptr conn
devIfaceName = sett->interfaceName();
ssid = iter.value().at(i).m_NetSsid;
map.insert(devIfaceName, ssid);
break;
}
}
iter++;
}
if (isFind)
{
emit connectionAdd(devIfaceName, ssid);
if (!map.isEmpty()) {
for(auto var = map.cbegin(); var != map.cend(); var++) {
QString devIfaceName = var.key();
QString ssid = var.value();
emit connectionAdd(devIfaceName, ssid);
}
}
}
void KyWirelessNetResource::onConnectionRemove(QString path)
{
qDebug() << "onConnectionRemove remove " << path;
bool isFind = false;
QString devIfaceName;
QString ssid;
QMap<QString, QString> map;
map.clear();
QMap<QString, QList<KyWirelessNetItem> >::iterator iter = m_WifiNetworkList.begin();
while (iter != m_WifiNetworkList.end())
@ -467,7 +474,8 @@ void KyWirelessNetResource::onConnectionRemove(QString path)
qDebug() << iter.value().at(i).m_connDbusPath;
if (iter.value().at(i).m_connDbusPath == path)
{
isFind = true;
QString devIfaceName;
QString ssid;
m_WifiNetworkList[iter.key()][i].m_isConfigured = false;
m_WifiNetworkList[iter.key()][i].m_connName = "";
m_WifiNetworkList[iter.key()][i].m_connectUuid = "";
@ -475,14 +483,38 @@ void KyWirelessNetResource::onConnectionRemove(QString path)
devIfaceName = iter.key();
ssid = iter.value().at(i).m_NetSsid;
map.insert(devIfaceName, ssid);
break;
}
}
iter++;
}
if (!map.isEmpty()) {
for(auto var = map.cbegin(); var != map.cend(); var++) {
QString devIfaceName = var.key();
QString ssid = var.value();
emit connectionRemove(devIfaceName, ssid);
}
}
if (isFind)
{
emit connectionRemove(devIfaceName, ssid);
}
}
void KyWirelessNetResource::onConnectionUpdate(QString uuid)
{
qDebug() << "onConnectionUpdate " << uuid;
NetworkManager::Connection::Ptr conn = m_networkResourceInstance->getConnect(uuid);
if (conn.isNull())
{
qDebug() << "onConnectionAdd can not find connection" << uuid;
return;
}
NetworkManager::ConnectionSettings::Ptr sett= conn->settings();
if (sett->connectionType() != NetworkManager::ConnectionSettings::ConnectionType::Wireless)
{
return;
}
m_WifiNetworkList.clear();
kyWirelessNetItemListInit();
emit wifiNetworkUpadte();
}

View File

@ -5,6 +5,7 @@
#include "kywirelessnetitem.h"
#include "kylinnetworkresourcemanager.h"
#include "kyenterpricesettinginfo.h"
#include "kylinconnectresource.h"
//class KyWirelessNetItem;
@ -25,7 +26,7 @@ public:
bool getEnterPriseInfoPeap(QString &uuid, KyEapMethodPeapInfo &info);
bool getEnterPriseInfoTtls(QString &uuid, KyEapMethodTtlsInfo &info);
bool getWirelessActiveConnection(QMap<QString, QStringList> &map);
void getWirelessActiveConnection(NetworkManager::ActiveConnection::State state, QMap<QString, QStringList> &map);
private:
@ -39,7 +40,8 @@ public slots:
void onWifiNetworkPropertyChange(NetworkManager::WirelessNetwork * net);
void onWifiNetworkDeviceDisappear();
void onConnectionAdd(NetworkManager::Connection::Ptr conn);
void onConnectionAdd(QString uuid);
void onConnectionUpdate(QString uuid);
void onConnectionRemove(QString);
signals:
@ -48,11 +50,13 @@ signals:
void secuTypeChange(QString, QString, QString);
void connectionRemove(QString, QString);
void connectionAdd(QString, QString);
void wifiNetworkUpadte();
void wifiNetworkAdd(QString, KyWirelessNetItem&);
void wifiNetworkRemove(QString, QString);
private:
KyNetworkResourceManager *m_networkResourceInstance = nullptr;
KyConnectResourse *m_connectResource = nullptr;
QMap<QString, QList<KyWirelessNetItem> > m_WifiNetworkList;
};

View File

@ -127,8 +127,9 @@ void NmDemo::initConnect()
//ui button
connect(refreshButton, &QPushButton::clicked, [=](){
appendDebugLog("init refreshButton clicked...");
m_wco->requestWirelessScan();
// appendDebugLog("init refreshButton clicked...");
// m_wco->requestWirelessScan();
getWifiList();
});
connect(connectButton, &QPushButton::clicked, this, &NmDemo::onConnectClicked);
@ -153,8 +154,11 @@ void NmDemo::initConnect()
connect(m_wnr, &KyWirelessNetResource::secuTypeChange, this ,&NmDemo::onSecuTypeChange);
connect(m_wnr, &KyWirelessNetResource::signalStrengthChange, this ,&NmDemo::onSignalStrengthChange);
connect(m_wnr, &KyWirelessNetResource::connectionRemove, this ,&NmDemo::onConnectionRemove);
connect(m_wnr, &KyWirelessNetResource::connectionAdd, this ,&NmDemo::onConnectionAdd);
connect(m_wnr, &KyWirelessNetResource::wifiNetworkUpadte, this ,&NmDemo::onWifiNetworkUpdate);
connect(m_wnr, &KyWirelessNetResource::wifiNetworkAdd, this ,&NmDemo::onWifiNetworkAdd);
connect(m_wnr, &KyWirelessNetResource::wifiNetworkRemove, this ,&NmDemo::onWifiNetworkRemove);
@ -221,6 +225,12 @@ void NmDemo::onWifiNetworkRemove(QString devIface, QString ssid)
getWifiList();
}
void NmDemo::onWifiNetworkUpdate()
{
appendDebugLog("onWifiNetworkUpdate...");
getWifiList();
}
void NmDemo::onConnectClicked()
{
appendDebugLog("onConnectClicked...");
@ -541,21 +551,44 @@ void NmDemo::getWifiList()
qDebug() << "getWifiList";
wifiList->clear();
QMap<QString,QStringList> actMap;
if (!m_wnr->getWirelessActiveConnection(actMap))
{
return;
}
m_wnr->getWirelessActiveConnection(NetworkManager::ActiveConnection::State::Activated, actMap);
appendDebugLog("getWirelessActiveConnection Activated " +QString::number(actMap.size()));
QMap<QString,QStringList>::iterator iter1 = actMap.begin();
while (iter1 != actMap.end())
{
wifiList->append(iter1.key());
for (int i = 0; i < iter1->size(); i++)
{
wifiList->append(iter1->at(i));
wifiList->append("Activated" + iter1->at(i));
}
wifiList->append("====================================");
iter1++;
}
m_wnr->getWirelessActiveConnection(NetworkManager::ActiveConnection::State::Activating, actMap);
appendDebugLog("getWirelessActiveConnection Activating " +QString::number(actMap.size()));
QMap<QString,QStringList>::iterator iter2 = actMap.begin();
while (iter2 != actMap.end())
{
wifiList->append(iter2.key());
for (int i = 0; i < iter2->size(); i++)
{
wifiList->append("Activating" + iter2->at(i));
}
wifiList->append("====================================");
iter2++;
}
m_wnr->getWirelessActiveConnection(NetworkManager::ActiveConnection::State::Deactivating, actMap);
appendDebugLog("getWirelessActiveConnection Deactivating " +QString::number(actMap.size()));
m_wnr->getWirelessActiveConnection(NetworkManager::ActiveConnection::State::Deactivated, actMap);
appendDebugLog("getWirelessActiveConnection Deactivated " +QString::number(actMap.size()));
return;
QMap<QString, QList<KyWirelessNetItem> > map;
if (!m_wnr->getAllDeviceWifiNetwork(map))
{
@ -564,6 +597,7 @@ void NmDemo::getWifiList()
QMap<QString, QList<KyWirelessNetItem> >::iterator iter = map.begin();
while (iter != map.end())
{
qDebug() << iter.key() << iter.value().size();
for (int i = 0; i < iter.value().size(); i++)
{
qDebug() << iter.value().at(i).m_NetSsid;

View File

@ -70,6 +70,7 @@ public slots:
void onConnectionAdd(QString, QString);
void onWifiNetworkAdd(QString, KyWirelessNetItem&);
void onWifiNetworkRemove(QString, QString);
void onWifiNetworkUpdate();
void onConnectClicked();
void onDisConnectClicked();