feature:1、add create connect、update connect and delete connect function with wired。
2、add library in control file of debian
This commit is contained in:
parent
38c052912e
commit
1eef4e2e72
|
@ -15,6 +15,8 @@ Build-Depends: debhelper (>=9),
|
|||
libkf5windowsystem-dev,
|
||||
libx11-dev,
|
||||
libqt5svg5-dev,
|
||||
libkf5networkmanagerqt-dev (>= 5.36.0),
|
||||
libnm-dev,
|
||||
Standards-Version: 4.5.0
|
||||
Rules-Requires-Root: no
|
||||
Homepage: https://github.com/ukui/kylin-nm
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
kylin-nm_3.0.1-1kylin54_source.buildinfo utils optional
|
||||
kylin-nm-dbgsym_3.0.1-1kylin54_amd64.ddeb debug optional automatic=yes
|
||||
kylin-nm_3.0.1-1kylin54_amd64.buildinfo utils optional
|
||||
kylin-nm_3.0.1-1kylin54_amd64.deb utils optional
|
||||
|
|
|
@ -64,6 +64,7 @@ include(src/singleapplication/qt-single-application.pri)
|
|||
|
||||
SOURCES += \
|
||||
src/backthread.cpp \
|
||||
src/kylinconnectinfo.cpp \
|
||||
src/kylinnetworkconnect.cpp \
|
||||
src/kylinnetworkresourcemanager.cpp \
|
||||
src/wifi-auth-thread.cpp \
|
||||
|
@ -98,6 +99,7 @@ SOURCES += \
|
|||
|
||||
HEADERS += \
|
||||
src/backthread.h \
|
||||
src/kylinconnectinfo.h \
|
||||
src/kylinnetworkconnect.h \
|
||||
src/kylinnetworkresourcemanager.h \
|
||||
src/wifi-auth-thread.h \
|
||||
|
|
232
src/confform.cpp
232
src/confform.cpp
|
@ -181,7 +181,7 @@ void ConfForm::setProp(QString connName, QString uuidName, QString v4method, QSt
|
|||
lastIpv6 = v6addr;
|
||||
lastTypeIndex = ui->cbType->currentIndex();
|
||||
netUuid = uuidName;
|
||||
//qDebug() << Q_FUNC_INFO << __LINE__ << connName << uuidName;
|
||||
qDebug() << Q_FUNC_INFO << connName << uuidName;
|
||||
|
||||
isActWifi = false;
|
||||
if (isWiFi) {
|
||||
|
@ -230,27 +230,43 @@ void ConfForm::setProp(QString connName, QString uuidName, QString v4method, QSt
|
|||
ui->btnSave->setEnabled(false);
|
||||
}
|
||||
|
||||
void ConfForm::connectInfoConstruct(KyConnectInfo &connectInfo)
|
||||
{
|
||||
QString connectName = ui->leName->text();
|
||||
|
||||
connectInfo.setConnectName(connectName);
|
||||
connectInfo.setIfaceName(m_ifaceName);
|
||||
if (MANUAL_IP == ui->cbType->currentIndex()) {
|
||||
if (!ui->leAddr->text().isEmpty()) {
|
||||
QString ipv4Address = ui->leAddr->text();
|
||||
QString ipv4NetMask = ui->cbMask->currentText();
|
||||
QString ipv4GateWay = ui->leGateway->text();
|
||||
|
||||
QStringList ipv4DnsList;
|
||||
ipv4DnsList.clear();
|
||||
ipv4DnsList<<ui->leDns->text();
|
||||
if (ui->leDns2->text() != "") {
|
||||
ipv4DnsList << ui->leDns2->text();
|
||||
}
|
||||
|
||||
connectInfo.setIpConfigType(IPADDRESS_V4, CONFIG_IP_MANUAL);
|
||||
connectInfo.ipv4AddressConstruct(ipv4Address, ipv4NetMask,
|
||||
ipv4GateWay, ipv4DnsList);
|
||||
}
|
||||
|
||||
if (!ui->leAddr_ipv6->text().isEmpty()) {
|
||||
qWarning()<<"ipv6 function need todo";
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//点击了创建新的网络的按钮
|
||||
void ConfForm::on_btnCreate_clicked()
|
||||
{
|
||||
KylinDBus kylindbus;
|
||||
kylindbus.getWiredCardName();
|
||||
QString mIfname;
|
||||
|
||||
QString mask = "";
|
||||
if (ui->cbMask->currentIndex() == 0) {
|
||||
mask = "24";
|
||||
} else if(ui->cbMask->currentIndex() == 1) {
|
||||
mask = "23";
|
||||
} else if(ui->cbMask->currentIndex() == 2) {
|
||||
mask = "22";
|
||||
} else if(ui->cbMask->currentIndex() == 3) {
|
||||
mask = "16";
|
||||
} else if(ui->cbMask->currentIndex() == 4) {
|
||||
mask = "8";
|
||||
} else {
|
||||
mask = "24";
|
||||
}
|
||||
|
||||
if (kylindbus.multiWiredIfName.size() == 0) {
|
||||
QString tip(tr("Can not create new wired network for without wired card"));
|
||||
|
@ -258,64 +274,28 @@ void ConfForm::on_btnCreate_clicked()
|
|||
onConfformHide();
|
||||
return;
|
||||
} else {
|
||||
mIfname = kylindbus.multiWiredIfName.at(0);
|
||||
m_ifaceName = kylindbus.multiWiredIfName.at(0);
|
||||
}
|
||||
|
||||
if (ui->cbType->currentIndex() == 1) {
|
||||
if (ui->cbType->currentIndex() == MANUAL_IP) {
|
||||
//在手动配置网络的情况下以及当前的IP参数有更改的情况下,检测IP冲突
|
||||
if (!ui->leAddr->text().isEmpty()|| !ui->leAddr_ipv6->text().isEmpty()) {
|
||||
if (check_ip_conflict(mIfname)) {
|
||||
if (check_ip_conflict(m_ifaceName)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
QString name = ui->leName->text();
|
||||
QString cmdStr;
|
||||
if(ui->cbType->currentIndex() == 0){
|
||||
cmdStr = "nmcli connection add con-name '" + name + "' ifname '" + mIfname + "' type ethernet";
|
||||
}else{
|
||||
if (ui->leAddr->text().isEmpty()) { //只配置了ipv6地址
|
||||
cmdStr = "nmcli connection add con-name '" + name + "' ifname '" + mIfname + "' type ethernet ipv4.method auto ipv6.method manual ipv6.address "
|
||||
+ ui->leAddr_ipv6->text();
|
||||
} else if (ui->leAddr_ipv6->text().isEmpty()) { //只配置了ipv4地址
|
||||
cmdStr = "nmcli connection add con-name '" + name + "' ifname '" + mIfname + "' type ethernet ipv6.method auto ipv4.method manual ipv4.address "
|
||||
+ ui->leAddr->text() + "/" + mask.toUtf8().data();
|
||||
} else {
|
||||
cmdStr = "nmcli connection add con-name '" + name + "' ifname '" + mIfname + "' type ethernet ipv6.method manual ipv6.address " + ui->leAddr_ipv6->text()
|
||||
+ " ipv4.method manual ipv4.address " + ui->leAddr->text() + "/" + mask.toUtf8().data();
|
||||
}
|
||||
if(!ui->leGateway->text().isEmpty()){
|
||||
cmdStr += " ipv4.gateway " + ui->leGateway->text();
|
||||
}
|
||||
if(!ui->leDns->text().isEmpty()){
|
||||
cmdStr += " ipv4.dns " + ui->leDns->text();
|
||||
if(!ui->leDns2->text().isEmpty()){
|
||||
cmdStr += "," + ui->leDns2->text();
|
||||
}
|
||||
}
|
||||
}
|
||||
cmdStr += " connection.autoconnect yes connection.autoconnect-priority 0";
|
||||
Utils::m_system(cmdStr.toUtf8().data());
|
||||
|
||||
if (ui->cbType->currentIndex() == 1) {
|
||||
//选择手动,配置Ipv4、掩码、网关
|
||||
this->isCreateNewNet = true;
|
||||
newUuid = "--";
|
||||
this->saveNetworkConfiguration();
|
||||
} else {
|
||||
KyConnectInfo newConnectInfo;
|
||||
connectInfoConstruct(newConnectInfo);
|
||||
m_networkConnect.createConnect(WIRED_CONNECT, newConnectInfo);
|
||||
|
||||
if (DHCP_IP == ui->cbType->currentIndex()) {
|
||||
//选择自动,则配置完成并发出桌面通知
|
||||
QString txt(tr("New network already created"));
|
||||
kylindbus.showDesktopNotify(txt);
|
||||
}
|
||||
|
||||
// if (!ui->leAddr_ipv6->text().isEmpty()) {
|
||||
// QString cmdStr = "nmcli connection modify '" + name + "' ipv6.method manual ipv6.addresses " + ui->leAddr_ipv6->text();
|
||||
// Utils::m_system(cmdStr.toUtf8().data());
|
||||
// } else {
|
||||
// QString cmdStr = "nmcli connection modify '" + name + "' ipv6.method auto";
|
||||
// Utils::m_system(cmdStr.toUtf8().data());
|
||||
// }
|
||||
|
||||
onConfformHide();
|
||||
}
|
||||
|
||||
|
@ -326,10 +306,10 @@ void ConfForm::on_btnSave_clicked()
|
|||
|
||||
if (isActWifi) {
|
||||
kylindbus.getWirelessCardName();
|
||||
QString mWifiIfname = kylindbus.dbusWiFiCardName;
|
||||
m_ifaceName = kylindbus.dbusWiFiCardName;
|
||||
this->isCreateNewNet = false;
|
||||
|
||||
if (mWifiIfname.isEmpty()) {
|
||||
if (m_ifaceName.isEmpty()) {
|
||||
QString notifyTxt(tr("Wireless card not exist"));
|
||||
kylindbus.showDesktopNotify(notifyTxt);
|
||||
return;
|
||||
|
@ -337,7 +317,7 @@ void ConfForm::on_btnSave_clicked()
|
|||
if (ui->cbType->currentIndex() == 1) {
|
||||
//在手动配置网络的情况下以及当前的IP参数有更改的情况下,检测IP冲突
|
||||
if ((!ui->leAddr->text().isEmpty() && (ui->leAddr->text() != lastIpv4)) || (!ui->leAddr_ipv6->text().isEmpty() && (ui->leAddr_ipv6->text() != lastIpv6))) {
|
||||
if (check_ip_conflict(mWifiIfname)) {
|
||||
if (check_ip_conflict(m_ifaceName)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
@ -346,8 +326,6 @@ void ConfForm::on_btnSave_clicked()
|
|||
this->saveNetworkConfiguration();
|
||||
} else {
|
||||
kylindbus.getWiredCardName();
|
||||
QString mIfname;
|
||||
|
||||
if (kylindbus.multiWiredIfName.size() == 0) {
|
||||
QString tip(tr("Can not save wired network for without wired card"));
|
||||
kylindbus.showDesktopNotify(tip);
|
||||
|
@ -355,64 +333,22 @@ void ConfForm::on_btnSave_clicked()
|
|||
onConfformHide();
|
||||
return;
|
||||
} else {
|
||||
mIfname = kylindbus.multiWiredIfName.at(0);
|
||||
m_ifaceName = kylindbus.multiWiredIfName.at(0);
|
||||
}
|
||||
|
||||
//如果网络的名称已经修改,则删掉当前网络,新建一个网络
|
||||
//修改为 直接modify 不删除不新建
|
||||
QString name = ui->leName->text();
|
||||
if (name != lastConnName) {
|
||||
// QString cmd = "nmcli connection delete '" + netUuid + "'";
|
||||
QString cmd = "nmcli connection modify '" + lastConnName + "' con-name '"+name+"'";
|
||||
int status = system(cmd.toUtf8().data());
|
||||
qDebug()<<"executed 'nmcli connection modify'. cmd="<<cmd<<". res="<<status;
|
||||
this->isCreateNewNet = false;
|
||||
|
||||
// this->isCreateNewNet = true;
|
||||
// newUuid = "--";
|
||||
|
||||
// QProcess * processAdd = new QProcess;
|
||||
// QString cmdAdd = "nmcli connection add con-name '" + name + "' ifname '" + mIfname + "' type ethernet";
|
||||
// QStringList options;
|
||||
// options << "-c" << cmdAdd;
|
||||
// processAdd->start("/bin/bash",options);
|
||||
// connect(processAdd, static_cast<void(QProcess::*)(int,QProcess::ExitStatus)>(&QProcess::finished), this, [ = ]() {
|
||||
// processAdd->deleteLater();
|
||||
// });
|
||||
// connect(processAdd, &QProcess::channelReadyRead, this, [ = ]() {
|
||||
// QString str = processAdd->readAll();
|
||||
// QString regExpPattern("[A-Za-z0-9]{8}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{4}-[A-Za-z0-9]{12}");
|
||||
// QRegExp regExpTest(regExpPattern);
|
||||
// int pos = str.indexOf(regExpTest);
|
||||
// newUuid = str.mid(pos,36); //36是uuid的长度
|
||||
|
||||
if (ui->cbType->currentIndex() == 1) {
|
||||
//在手动配置网络的情况下以及当前的IP参数有更改的情况下,检测IP冲突
|
||||
if ((!ui->leAddr->text().isEmpty() && (ui->leAddr->text() != lastIpv4)) || (!ui->leAddr_ipv6->text().isEmpty() && (ui->leAddr_ipv6->text() != lastIpv6))) {
|
||||
if (check_ip_conflict(mIfname)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
this->saveNetworkConfiguration();
|
||||
return;
|
||||
// });
|
||||
// processAdd->waitForFinished();
|
||||
} else {
|
||||
this->isCreateNewNet = false;
|
||||
newUuid = "--";
|
||||
|
||||
if (ui->cbType->currentIndex() == 1) {
|
||||
//在手动配置网络的情况下以及当前的IP参数有更改的情况下,检测IP冲突
|
||||
if ((!ui->leAddr->text().isEmpty() && (ui->leAddr->text() != lastIpv4)) || (!ui->leAddr_ipv6->text().isEmpty() && (ui->leAddr_ipv6->text() != lastIpv6))) {
|
||||
if (check_ip_conflict(mIfname)) {
|
||||
return;
|
||||
}
|
||||
if (ui->cbType->currentIndex() == 1) {
|
||||
//在手动配置网络的情况下以及当前的IP参数有更改的情况下,检测IP冲突
|
||||
if ((!ui->leAddr->text().isEmpty() && (ui->leAddr->text() != lastIpv4)) || (!ui->leAddr_ipv6->text().isEmpty() && (ui->leAddr_ipv6->text() != lastIpv6))) {
|
||||
if (check_ip_conflict(m_ifaceName)) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
this->saveNetworkConfiguration();
|
||||
}
|
||||
|
||||
this->saveNetworkConfiguration();
|
||||
|
||||
}
|
||||
QString txt(tr("New network settings already finished"));
|
||||
kylindbus.showDesktopNotify(txt);
|
||||
|
@ -420,67 +356,19 @@ void ConfForm::on_btnSave_clicked()
|
|||
|
||||
void ConfForm::saveNetworkConfiguration()
|
||||
{
|
||||
//获取对应掩码的参数
|
||||
QString mask = "";
|
||||
if (ui->cbMask->currentIndex() == 0) {
|
||||
mask = "24";
|
||||
} else if(ui->cbMask->currentIndex() == 1) {
|
||||
mask = "23";
|
||||
} else if(ui->cbMask->currentIndex() == 2) {
|
||||
mask = "22";
|
||||
} else if(ui->cbMask->currentIndex() == 3) {
|
||||
mask = "16";
|
||||
} else if(ui->cbMask->currentIndex() == 4) {
|
||||
mask = "8";
|
||||
} else {
|
||||
mask = "24";
|
||||
}
|
||||
KylinDBus kylindbus;
|
||||
|
||||
KyConnectInfo newConnectInfo;
|
||||
connectInfoConstruct(newConnectInfo);
|
||||
m_networkConnect.updateConnect(netUuid, newConnectInfo);
|
||||
|
||||
QString name = ui->leName->text();
|
||||
QString dnss = ui->leDns->text();
|
||||
if (ui->leDns2->text() != "") {
|
||||
dnss.append(",");
|
||||
dnss.append(ui->leDns2->text());
|
||||
}
|
||||
//是选择的自动还是手动配置网络
|
||||
if (ui->cbType->currentIndex() == 0) {
|
||||
qDebug() << Q_FUNC_INFO << __LINE__ << name << newUuid << ui->leAddr->text() << mask << ui->leGateway->text();
|
||||
//kylin_network_set_automethod(name.toUtf8().data());
|
||||
kylin_network_set_automethod(netUuid.toUtf8().data());
|
||||
kylin_network_set_ipv6_automethod(netUuid.toUtf8().data());
|
||||
if (ui->cbType->currentIndex() == DHCP_IP) {
|
||||
if (this->isActConf && lastTypeIndex == 1 && ui->cbType->currentIndex() == 0) {
|
||||
//对于已经连接的网络,若由手动改为自动,则进行重连以保证配置生效
|
||||
KylinDBus kylindbus;
|
||||
kylindbus.reConnectWiredNet(netUuid.toUtf8().data());
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (newUuid != "--" && newUuid != "" && !newUuid.isEmpty()) {
|
||||
qDebug() << Q_FUNC_INFO << __LINE__ << name << newUuid << ui->leAddr->text() << mask << ui->leGateway->text() << dnss;
|
||||
if (!ui->leAddr->text().isEmpty()) {
|
||||
kylin_network_set_manualall(newUuid.toUtf8().data(), ui->leAddr->text().toUtf8().data(), mask.toUtf8().data(), ui->leGateway->text().toUtf8().data(), dnss.toUtf8().data());
|
||||
} else {
|
||||
kylin_network_set_automethod(newUuid.toUtf8().data());
|
||||
}
|
||||
if (!ui->leAddr_ipv6->text().isEmpty()) {
|
||||
kylin_network_set_ipv6_manualmethod(newUuid.toUtf8().data(), ui->leAddr_ipv6->text().toUtf8().data());
|
||||
} else {
|
||||
kylin_network_set_ipv6_automethod(newUuid.toUtf8().data());
|
||||
}
|
||||
} else {
|
||||
qDebug() << Q_FUNC_INFO << __LINE__ << name << netUuid << ui->leAddr->text() << mask << ui->leGateway->text() << dnss;
|
||||
if (!ui->leAddr->text().isEmpty()) {
|
||||
kylin_network_set_manualall(netUuid.toUtf8().data(), ui->leAddr->text().toUtf8().data(), mask.toUtf8().data(), ui->leGateway->text().toUtf8().data(), dnss.toUtf8().data());
|
||||
} else {
|
||||
kylin_network_set_automethod(netUuid.toUtf8().data());
|
||||
}
|
||||
if (!ui->leAddr_ipv6->text().isEmpty()) {
|
||||
kylin_network_set_ipv6_manualmethod(netUuid.toUtf8().data(), ui->leAddr_ipv6->text().toUtf8().data());
|
||||
} else {
|
||||
kylin_network_set_ipv6_automethod(netUuid.toUtf8().data());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
onConfformHide();
|
||||
}
|
||||
|
|
|
@ -28,11 +28,18 @@
|
|||
#include <QDialog>
|
||||
#include <QListView>
|
||||
#include "kylin-dbus-interface.h"
|
||||
#include "kylinnetworkconnect.h"
|
||||
#include "kylinconnectinfo.h"
|
||||
|
||||
namespace Ui {
|
||||
class ConfForm;
|
||||
}
|
||||
|
||||
enum{
|
||||
DHCP_IP = 0,
|
||||
MANUAL_IP = 1,
|
||||
};
|
||||
|
||||
class ConfForm : public QDialog
|
||||
{
|
||||
Q_OBJECT
|
||||
|
@ -90,6 +97,7 @@ private:
|
|||
bool check_ip_conflict(QString ifname);
|
||||
void onConfformHide();
|
||||
bool isEditingAlready(); //连接按钮是否可被按
|
||||
void connectInfoConstruct(KyConnectInfo &connectInfo);
|
||||
|
||||
bool isPress;
|
||||
QPoint winPos;
|
||||
|
@ -105,6 +113,9 @@ private:
|
|||
|
||||
QString labelQss, cbxQss, leQss, lineQss, btnOnQss, btnOffQss;
|
||||
|
||||
KyNetworkConnect m_networkConnect;
|
||||
QString m_ifaceName;
|
||||
|
||||
signals:
|
||||
void requestRefreshLanList(int updateType);
|
||||
};
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
#include "kylinconnectinfo.h"
|
||||
#include <QDebug>
|
||||
|
||||
KyConnectInfo::KyConnectInfo()
|
||||
{
|
||||
m_connectName = "";
|
||||
m_ifaceName = "";
|
||||
|
||||
m_ipv4ConfigIpType = CONFIG_IP_DHCP;
|
||||
m_ipv4Address.clear();
|
||||
m_ipv4Dns.clear();
|
||||
|
||||
m_ipv6ConfigIpType = CONFIG_IP_DHCP;
|
||||
m_ipv6Address.clear();
|
||||
m_ipv6Dns.clear();
|
||||
}
|
||||
|
||||
KyConnectInfo::~KyConnectInfo()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void KyConnectInfo::setIfaceName(QString &ifaceName)
|
||||
{
|
||||
m_ifaceName = ifaceName;
|
||||
}
|
||||
|
||||
void KyConnectInfo::setConnectName(QString &connectName)
|
||||
{
|
||||
m_connectName = connectName;
|
||||
}
|
||||
|
||||
int KyConnectInfo::setIpConfigType(KyIpAddressType ipType, KyIpConfigType ipConfigType)
|
||||
{
|
||||
if (ipType != IPADDRESS_V4 && ipType != IPADDRESS_V6) {
|
||||
qWarning()<<"set config ip type failed, the ip address type undefined"<<ipType;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (CONFIG_IP_DHCP != ipConfigType && CONFIG_IP_MANUAL != ipConfigType) {
|
||||
qWarning()<<"set config ip type failed, the config ip type undefined"<<ipConfigType;
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (IPADDRESS_V4 == ipType) {
|
||||
m_ipv4ConfigIpType = ipConfigType;
|
||||
} else {
|
||||
m_ipv6ConfigIpType = ipConfigType;
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
void KyConnectInfo::ipv4AddressConstruct(QString &ipv4Address, QString &ipv4NetMask, QString &ipv4GateWay, QStringList &ipv4Dns)
|
||||
{
|
||||
qDebug()<<"ipv4 address"<<ipv4Address << ipv4NetMask << ipv4GateWay;
|
||||
NetworkManager::IpAddress nmIpv4Address;
|
||||
nmIpv4Address.setIp(QHostAddress(ipv4Address));
|
||||
nmIpv4Address.setGateway(QHostAddress(ipv4GateWay));
|
||||
nmIpv4Address.setNetmask(QHostAddress(ipv4NetMask));
|
||||
m_ipv4Address << nmIpv4Address;
|
||||
|
||||
for (int index = 0; index < ipv4Dns.size(); ++index) {
|
||||
qDebug()<<"dns"<<ipv4Dns[index];
|
||||
m_ipv4Dns << QHostAddress(ipv4Dns[index]);
|
||||
}
|
||||
|
||||
return ;
|
||||
}
|
||||
void KyConnectInfo::ipv6AddressConstruct(QString &ipv6Address, QString &ipv6NetMask, QString &ipv6GateWay, QStringList &ipv6Dns)
|
||||
{
|
||||
NetworkManager::IpAddress nmIpv6Address;
|
||||
nmIpv6Address.setIp(QHostAddress(ipv6Address));
|
||||
nmIpv6Address.setGateway(QHostAddress(ipv6GateWay));
|
||||
nmIpv6Address.setPrefixLength(ipv6NetMask.toInt());
|
||||
m_ipv6Address << nmIpv6Address;
|
||||
|
||||
for (int index = 0; index < ipv6Dns.size(); index++) {
|
||||
m_ipv6Dns << QHostAddress(ipv6Dns[index]);
|
||||
}
|
||||
|
||||
return ;
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef KYLINCONNECTINFO_H
|
||||
#define KYLINCONNECTINFO_H
|
||||
|
||||
#include <QStringList>
|
||||
#include <QString>
|
||||
#include <QObject>
|
||||
|
||||
#include <NetworkManagerQt/AdslDevice>
|
||||
#include <NetworkManagerQt/WiredDevice>
|
||||
#include <NetworkManagerQt/Ipv4Setting>
|
||||
#include <NetworkManagerQt/Ipv6Setting>
|
||||
#include <NetworkManagerQt/WiredSetting>
|
||||
|
||||
typedef enum {
|
||||
CONFIG_IP_MANUAL,
|
||||
CONFIG_IP_DHCP,
|
||||
}KyIpConfigType;
|
||||
|
||||
typedef enum {
|
||||
IPADDRESS_V4,
|
||||
IPADDRESS_V6,
|
||||
}KyIpAddressType;
|
||||
|
||||
class KyConnectInfo : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
KyConnectInfo();
|
||||
~KyConnectInfo();
|
||||
|
||||
public:
|
||||
void setIfaceName(QString &ifaceName);
|
||||
void setConnectName(QString &connectName);
|
||||
int setIpConfigType(KyIpAddressType ipType, KyIpConfigType configType);
|
||||
void ipv4AddressConstruct(QString &ipv4Address, QString &ipv4NetMask, QString &ipv4GateWay, QStringList &ipv4Dns);
|
||||
void ipv6AddressConstruct(QString &ipv6Address, QString &ipv6NetMask, QString &ipv6GateWay, QStringList &ipv6Dns);
|
||||
|
||||
public:
|
||||
QString m_connectName;
|
||||
QString m_ifaceName;
|
||||
|
||||
KyIpConfigType m_ipv4ConfigIpType;
|
||||
QList<NetworkManager::IpAddress> m_ipv4Address;
|
||||
QList<QHostAddress> m_ipv4Dns;
|
||||
|
||||
KyIpConfigType m_ipv6ConfigIpType;
|
||||
QList<NetworkManager::IpAddress> m_ipv6Address;
|
||||
QList<QHostAddress> m_ipv6Dns;
|
||||
};
|
||||
|
||||
#endif // KYLINCONNECTINFO_H
|
|
@ -1,7 +1,32 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "kylinnetworkconnect.h"
|
||||
|
||||
#include <NetworkManagerQt/AdslDevice>
|
||||
#include <NetworkManagerQt/WiredDevice>
|
||||
#include <NetworkManagerQt/Ipv4Setting>
|
||||
#include <NetworkManagerQt/Ipv6Setting>
|
||||
#include <NetworkManagerQt/WiredSetting>
|
||||
|
||||
KyNetworkConnect::KyNetworkConnect()
|
||||
{
|
||||
qDebug()<<"construct network connect";
|
||||
m_networkResourceInstance = KyNetworkResourceManager::getInstance();
|
||||
}
|
||||
|
||||
|
@ -10,6 +35,147 @@ KyNetworkConnect::~KyNetworkConnect()
|
|||
m_networkResourceInstance = nullptr;
|
||||
}
|
||||
|
||||
void KyNetworkConnect::ipv4SettingInit(
|
||||
NetworkManager::Ipv4Setting::Ptr &ipv4Setting,
|
||||
const KyConnectInfo &connectInfo)
|
||||
{
|
||||
ipv4Setting->setInitialized(true);
|
||||
|
||||
if (CONFIG_IP_DHCP == connectInfo.m_ipv4ConfigIpType) {
|
||||
ipv4Setting->setMethod(NetworkManager::Ipv4Setting::Automatic);
|
||||
return;
|
||||
} else {
|
||||
ipv4Setting->setMethod(NetworkManager::Ipv4Setting::Manual);
|
||||
}
|
||||
|
||||
if (!connectInfo.m_ipv4Dns.empty()) {
|
||||
ipv4Setting->setDns(connectInfo.m_ipv4Dns);
|
||||
}
|
||||
|
||||
if (!connectInfo.m_ipv4Address.empty()) {
|
||||
ipv4Setting->setAddresses(connectInfo.m_ipv4Address);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
void KyNetworkConnect::ipv6SettingInit(
|
||||
NetworkManager::Ipv6Setting::Ptr &ipv6Setting,
|
||||
const KyConnectInfo &connectInfo)
|
||||
{
|
||||
ipv6Setting->setInitialized(true);
|
||||
|
||||
if (CONFIG_IP_DHCP == connectInfo.m_ipv6ConfigIpType) {
|
||||
ipv6Setting->setMethod(NetworkManager::Ipv6Setting::Automatic);
|
||||
return;
|
||||
}
|
||||
|
||||
ipv6Setting->setMethod(NetworkManager::Ipv6Setting::Manual);
|
||||
if (!connectInfo.m_ipv6Dns.empty()) {
|
||||
ipv6Setting->setDns(connectInfo.m_ipv6Dns);
|
||||
}
|
||||
|
||||
if (!connectInfo.m_ipv6Address.empty()) {
|
||||
ipv6Setting->setAddresses(connectInfo.m_ipv6Address);
|
||||
}
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
void KyNetworkConnect::connectSettingInit(
|
||||
NetworkManager::ConnectionSettings::Ptr connectionSettings,
|
||||
const KyConnectInfo &connectInfo)
|
||||
{
|
||||
connectionSettings->setId(connectInfo.m_connectName);
|
||||
connectionSettings->setUuid(NetworkManager::ConnectionSettings::createNewUuid());
|
||||
connectionSettings->setAutoconnect(true);
|
||||
connectionSettings->setAutoconnectPriority(0);
|
||||
connectionSettings->setInterfaceName(connectInfo.m_ifaceName);
|
||||
return;
|
||||
}
|
||||
|
||||
void KyNetworkConnect::createWiredConnect(const KyConnectInfo &connectInfo)
|
||||
{
|
||||
NetworkManager::ConnectionSettings::Ptr connectionSettings = NetworkManager::ConnectionSettings::Ptr(new NetworkManager::ConnectionSettings(NetworkManager::ConnectionSettings::Wired));
|
||||
connectSettingInit(connectionSettings, connectInfo);
|
||||
|
||||
NetworkManager::Ipv4Setting::Ptr ipv4Setting = connectionSettings->setting(NetworkManager::Setting::Ipv4).dynamicCast<NetworkManager::Ipv4Setting>();
|
||||
ipv4SettingInit(ipv4Setting, connectInfo);
|
||||
|
||||
NetworkManager::Ipv6Setting::Ptr ipv6Setting = connectionSettings->setting(NetworkManager::Setting::Ipv6).dynamicCast<NetworkManager::Ipv6Setting>();
|
||||
ipv6SettingInit(ipv6Setting, connectInfo);
|
||||
|
||||
NetworkManager::WiredSetting::Ptr wiredSetting = connectionSettings->setting(NetworkManager::Setting::Wired).dynamicCast<NetworkManager::WiredSetting>();
|
||||
wiredSetting->setInitialized(true);
|
||||
|
||||
qDebug()<<"add wired connect"<<connectInfo.m_connectName;
|
||||
|
||||
QDBusPendingCallWatcher * watcher;
|
||||
watcher = new QDBusPendingCallWatcher{NetworkManager::addConnection(connectionSettings->toMap()), this};
|
||||
connect(watcher, &QDBusPendingCallWatcher::finished, [](QDBusPendingCallWatcher * watcher) {
|
||||
if (watcher->isError() || !watcher->isValid()) {
|
||||
//TODO: in what form should we output the warning messages
|
||||
qWarning() << "create connection failed: " << watcher->error().message();
|
||||
} else {
|
||||
qWarning()<<"success"<<watcher->reply().errorName() <<"error msg"<<watcher->reply().errorMessage();
|
||||
qWarning()<<"error type"<<watcher->error().type();
|
||||
}
|
||||
watcher->deleteLater();
|
||||
});
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void KyNetworkConnect::createConnect(KyConnectType connectType, const KyConnectInfo &connectInfo)
|
||||
{
|
||||
switch (connectType) {
|
||||
case WIRED_CONNECT:
|
||||
qDebug()<<"create wired connect";
|
||||
createWiredConnect(connectInfo);
|
||||
break;
|
||||
default:
|
||||
qWarning()<<"the connect type undefined"<<connectType;
|
||||
break;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
void KyNetworkConnect::updateConnect(const QString &connectUuid, const KyConnectInfo &connectInfo)
|
||||
{
|
||||
qDebug()<<"update connect"<<connectUuid;
|
||||
NetworkManager::Connection::Ptr connectPtr =
|
||||
NetworkManager::findConnectionByUuid(connectUuid);
|
||||
|
||||
NetworkManager::ConnectionSettings::Ptr connectionSettings = connectPtr->settings();
|
||||
connectSettingInit(connectionSettings, connectInfo);
|
||||
|
||||
NetworkManager::Ipv4Setting::Ptr ipv4Setting = connectionSettings->setting(NetworkManager::Setting::Ipv4).dynamicCast<NetworkManager::Ipv4Setting>();
|
||||
ipv4SettingInit(ipv4Setting, connectInfo);
|
||||
|
||||
NetworkManager::Ipv6Setting::Ptr ipv6Setting = connectionSettings->setting(NetworkManager::Setting::Ipv6).dynamicCast<NetworkManager::Ipv6Setting>();
|
||||
ipv6SettingInit(ipv6Setting, connectInfo);
|
||||
|
||||
NetworkManager::WiredSetting::Ptr wiredSetting = connectionSettings->setting(NetworkManager::Setting::Wired).dynamicCast<NetworkManager::WiredSetting>();
|
||||
wiredSetting->setInitialized(true);
|
||||
|
||||
connectPtr->update(connectionSettings->toMap());
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
void KyNetworkConnect::deleteConnect(const QString &connectUuid)
|
||||
{
|
||||
|
||||
qWarning()<<"TODO:delete connect ";
|
||||
|
||||
NetworkManager::Connection::Ptr connectPtr =
|
||||
NetworkManager::findConnectionByUuid(connectUuid);
|
||||
|
||||
connectPtr->remove();
|
||||
|
||||
return ;
|
||||
}
|
||||
|
||||
int KyNetworkConnect::activateConnection(const QString connectUuid)
|
||||
{
|
||||
QString conn_uni;
|
||||
|
@ -70,9 +236,12 @@ int KyNetworkConnect::activateConnection(const QString connectUuid)
|
|||
connect(watcher, &QDBusPendingCallWatcher::finished, [conn_name, dev_name] (QDBusPendingCallWatcher * watcher) {
|
||||
if (watcher->isError() || !watcher->isValid()) {
|
||||
//TODO: in what form should we output the warning messages
|
||||
qWarning() << QStringLiteral("activation of connection '%1' on interface '%2' failed: %3").arg(conn_name)
|
||||
.arg(dev_name).arg(watcher->error().message());
|
||||
qWarning() << "activate connection failed: " << watcher->error().message();
|
||||
} else {
|
||||
qWarning()<<"success"<<watcher->reply().errorName() <<"error msg"<<watcher->reply().errorMessage();
|
||||
qWarning()<<"error type"<<watcher->error().type();
|
||||
}
|
||||
|
||||
watcher->deleteLater();
|
||||
});
|
||||
|
||||
|
|
|
@ -1,7 +1,31 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef KYLINNETWORKCONNECT_H
|
||||
#define KYLINNETWORKCONNECT_H
|
||||
|
||||
#include "kylinnetworkresourcemanager.h"
|
||||
#include "kylinconnectinfo.h"
|
||||
|
||||
typedef enum{
|
||||
WIRED_CONNECT,
|
||||
WIFI_CONNECT,
|
||||
}KyConnectType;
|
||||
|
||||
class KyNetworkConnect : public QObject
|
||||
{
|
||||
|
@ -11,15 +35,29 @@ public:
|
|||
~KyNetworkConnect();
|
||||
|
||||
public:
|
||||
void createConnect(KyConnectType connectType, const KyConnectInfo &connectInfo);
|
||||
void updateConnect(const QString &connectUuid, const KyConnectInfo &connectInfo);
|
||||
void deleteConnect(const QString &connectUuid);
|
||||
int addAndActivateConnect(const QString );
|
||||
int activateConnection(const QString connectUuid);
|
||||
int deactivateConnection(const QString connectName, const QString &uuid);
|
||||
void requestScan(const QString ifaceName);
|
||||
void requestAllWifiScan();
|
||||
|
||||
private:
|
||||
void connectSettingInit(
|
||||
NetworkManager::ConnectionSettings::Ptr connectionSettings,
|
||||
const KyConnectInfo &connectInfo);
|
||||
void ipv4SettingInit(NetworkManager::Ipv4Setting::Ptr &ipv4Setting,
|
||||
const KyConnectInfo &connectInfo);
|
||||
void ipv6SettingInit(NetworkManager::Ipv6Setting::Ptr &ipv6Setting,
|
||||
const KyConnectInfo &connectInfo);
|
||||
|
||||
void createWiredConnect(const KyConnectInfo &connectInfo);
|
||||
|
||||
signals:
|
||||
void activateConnectionFinished(NetworkManager::Connection::Ptr conn);
|
||||
void deactivateConnectionFinished(NetworkManager::Connection::Ptr conn);
|
||||
void activateConnectionFinished(NetworkManager::Connection::Ptr &conn);
|
||||
void deactivateConnectionFinished(NetworkManager::Connection::Ptr &conn);
|
||||
|
||||
private:
|
||||
KyNetworkResourceManager *m_networkResourceInstance = nullptr;
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "kylinnetworkresourcemanager.h"
|
||||
|
||||
KyNetworkResourceManager* KyNetworkResourceManager::m_pInstance = nullptr;
|
||||
|
@ -72,6 +90,7 @@ void KyNetworkResourceManager::addActiveConnection(NetworkManager::ActiveConnect
|
|||
connect(conn.data(), &NetworkManager::ActiveConnection::typeChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
||||
connect(conn.data(), &NetworkManager::ActiveConnection::masterChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
||||
connect(conn.data(), &NetworkManager::ActiveConnection::specificObjectChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
||||
connect(conn.data(), &NetworkManager::ActiveConnection::stateChangedReason, this, &KyNetworkResourceManager::onActiveConnectionChangedReason);
|
||||
connect(conn.data(), &NetworkManager::ActiveConnection::stateChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
||||
connect(conn.data(), &NetworkManager::ActiveConnection::vpnChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
||||
connect(conn.data(), &NetworkManager::ActiveConnection::uuidChanged, this, &KyNetworkResourceManager::onActiveConnectionUpdated);
|
||||
|
@ -133,7 +152,7 @@ void KyNetworkResourceManager::addDevice(NetworkManager::Device::Ptr device)
|
|||
{
|
||||
m_devices.push_back(device);
|
||||
//device signals
|
||||
connect(device.data(), &NetworkManager::Device::stateChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||
//connect(device.data(), &NetworkManager::Device::stateChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||
connect(device.data(), &NetworkManager::Device::activeConnectionChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||
connect(device.data(), &NetworkManager::Device::autoconnectChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||
connect(device.data(), &NetworkManager::Device::availableConnectionChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||
|
@ -158,6 +177,7 @@ void KyNetworkResourceManager::addDevice(NetworkManager::Device::Ptr device)
|
|||
connect(device.data(), &NetworkManager::Device::meteredChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||
connect(device.data(), &NetworkManager::Device::connectionStateChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||
connect(device.data(), &NetworkManager::Device::stateReasonChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||
connect(device.data(), &NetworkManager::Device::stateChanged, this, &KyNetworkResourceManager::onDeviceStateChanged);
|
||||
connect(device.data(), &NetworkManager::Device::udiChanged, this, &KyNetworkResourceManager::onDeviceUpdated);
|
||||
switch (device->type())
|
||||
{
|
||||
|
@ -344,11 +364,34 @@ void KyNetworkResourceManager::onActiveConnectionUpdated()
|
|||
emit activeConnectionUpdate(qobject_cast<NetworkManager::ActiveConnection *>(sender()));
|
||||
}
|
||||
|
||||
void KyNetworkResourceManager::onActiveConnectionChangedReason(NetworkManager::ActiveConnection::State state,
|
||||
NetworkManager::ActiveConnection::Reason reason)
|
||||
{
|
||||
qWarning()<<"the active connect state"<<state;
|
||||
qWarning()<<"the active connect state chanager reason:"<<reason;
|
||||
return;
|
||||
}
|
||||
|
||||
void KyNetworkResourceManager::onDeviceUpdated()
|
||||
{
|
||||
emit deviceUpdate(qobject_cast<NetworkManager::Device *>(sender()));
|
||||
}
|
||||
|
||||
void KyNetworkResourceManager::onDeviceStateChanged(
|
||||
NetworkManager::Device::State newstate,
|
||||
NetworkManager::Device::State oldstate,
|
||||
NetworkManager::Device::StateChangeReason reason)
|
||||
{
|
||||
NetworkManager::WiredDevice *wiredDevice = qobject_cast<NetworkManager::WiredDevice *>(sender());
|
||||
if (wiredDevice->carrier()) {
|
||||
qWarning()<<"the device carrier true";
|
||||
} else {
|
||||
qWarning()<<"the device carrier false";
|
||||
}
|
||||
|
||||
qWarning()<<"the device state "<<oldstate << "to" <<newstate << "reason"<< reason;
|
||||
}
|
||||
|
||||
void KyNetworkResourceManager::onWifiNetworkAppeared(QString const & ssid)
|
||||
{
|
||||
NetworkManager::Device * dev = qobject_cast<NetworkManager::Device *>(sender());
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
/*
|
||||
* Copyright (C) 2020 Tianjin KYLIN Information Technology Co., Ltd.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef KYLINNETWORKRESOURCEMANAGER_H
|
||||
#define KYLINNETWORKRESOURCEMANAGER_H
|
||||
|
||||
|
@ -95,9 +113,14 @@ private slots:
|
|||
|
||||
//active connection
|
||||
void onActiveConnectionUpdated();
|
||||
void onActiveConnectionChangedReason(NetworkManager::ActiveConnection::State state,
|
||||
NetworkManager::ActiveConnection::Reason reason);
|
||||
|
||||
//device
|
||||
void onDeviceUpdated();
|
||||
void onDeviceStateChanged(NetworkManager::Device::State newstate,
|
||||
NetworkManager::Device::State oldstate,
|
||||
NetworkManager::Device::StateChangeReason reason);
|
||||
void onWifiNetworkAppeared(QString const & ssid);
|
||||
void onWifiNetworkDisappeared(QString const & ssid);
|
||||
|
||||
|
|
Loading…
Reference in New Issue