add ipv4 1~128 support && fix some bug

This commit is contained in:
jzxc95 2021-10-19 10:35:18 +08:00
parent 150bbd4489
commit 76c50dba47
10 changed files with 71 additions and 31 deletions

View File

@ -315,6 +315,7 @@ void KyConnectResourse::getIpv6ConnectSetting(
connectSetting.m_ipv6ConfigIpType = CONFIG_IP_MANUAL;
connectSetting.m_ipv6Address = ipv6Setting->addresses();
connectSetting.m_ipv6Dns = ipv6Setting->dns();
return;

View File

@ -121,7 +121,6 @@ void KyConnectSetting::dumpInfo()
qDebug()<<"ipv4 dns" << m_ipv4Dns.at(index).toString();
}
/*
for (int index = 0 ; index << m_ipv6Address.size(); index++) {
qDebug()<<"ipv6 address" << m_ipv6Address.at(index).ip().toString();
qDebug()<<"ipv6 gate way" << m_ipv6Address.at(index).gateway().toString();
@ -131,5 +130,4 @@ void KyConnectSetting::dumpInfo()
for (int index = 0; index < m_ipv6Dns.size(); ++index) {
qDebug()<<"ipv6 dns" << m_ipv6Dns.at(index).toString();
}
*/
}

View File

@ -466,6 +466,7 @@ void KyWirelessConnectOperation::addAndActiveWirelessConnect(QString & devIface,
qDebug() << "findBestWirelessSecurity type "<< sec_type;
NetworkManager::ConnectionSettings::Ptr settings = nullptr;
switch (sec_type)
{
case NetworkManager::UnknownSecurity:
@ -475,7 +476,8 @@ void KyWirelessConnectOperation::addAndActiveWirelessConnect(QString & devIface,
break;
case NetworkManager::WpaPsk:
case NetworkManager::Wpa2Psk:
if (NetworkManager::ConnectionSettings::Ptr settings = assembleWpaXPskSettings(access_point, connSettingInfo.m_psk, connSettingInfo.isAutoConnect)) {
settings = assembleWpaXPskSettings(access_point, connSettingInfo.m_psk, connSettingInfo.isAutoConnect;
if (nullptr != settings) {
map_settings = settings->toMap();
} else {
qWarning() << QStringLiteral("connection settings assembly for '%1' failed, abandoning activation...").arg(conn_name);
@ -484,7 +486,8 @@ void KyWirelessConnectOperation::addAndActiveWirelessConnect(QString & devIface,
break;
//TODO: other types...
case NetworkManager::SAE:
if (NetworkManager::ConnectionSettings::Ptr settings = assembleSaeSettings(access_point, connSettingInfo.m_psk, connSettingInfo.isAutoConnect)) {
settings = assembleSaeSettings(access_point, connSettingInfo.m_psk, connSettingInfo.isAutoConnect;
if (nullptr != settings) {
map_settings = settings->toMap();
} else {
qWarning() << QStringLiteral("connection settings assembly for '%1' failed, abandoning activation...").arg(conn_name);

View File

@ -48,7 +48,7 @@ public:
KyIpConfigType ipv6ConfigType = CONFIG_IP_DHCP;
QString strIPV6Address;
QString strIPV6Prefix;
int iIPV6Prefix;
QString strIPV6FirDns;
QString strIPV6SecDns;
QString strIPV6GateWay;

View File

@ -57,6 +57,9 @@ void DetailPage::setMac(const QString &mac) {
void DetailPage::setAutoConnect(bool flag)
{
if (!mIsWlan) {
return;
}
this->forgetNetBox->setChecked(flag);
}
@ -67,6 +70,9 @@ void DetailPage::getSsid(QString &ssid)
bool DetailPage::checkIsChanged(const ConInfo info)
{
if (!mIsWlan) {
return false;
}
if (info.isAutoConnect != forgetNetBox->isChecked()) {
return true;
} else {
@ -84,7 +90,6 @@ void DetailPage::addDetailItem(QListWidget *listWidget, DetailWidget *detailWidg
}
void DetailPage::initUI() {
forgetNetBox = new QCheckBox(this);
layout = new QVBoxLayout(this);
layout->setContentsMargins(0,0,0,0);
@ -147,16 +152,19 @@ void DetailPage::initUI() {
m_macWidget = new DetailWidget(qobject_cast<QWidget *>(mMac), m_listWidget);
m_macWidget->setKey(tr("Mac:"));
autoConnect = new QLabel(this);
if (mIsWlan) {
autoConnect = new QLabel(this);
forgetNetBox = new QCheckBox(this);
autoConnect->setText(tr("Auto Connection"));
mAutoLayout = new QHBoxLayout(this);
QSpacerItem *horizontalSpacer;
horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
autoConnect->setText(tr("Auto Connection"));
mAutoLayout = new QHBoxLayout(this);
QSpacerItem *horizontalSpacer;
horizontalSpacer = new QSpacerItem(40, 20, QSizePolicy::Expanding, QSizePolicy::Minimum);
mAutoLayout->addWidget(forgetNetBox);
mAutoLayout->addWidget(autoConnect);
mAutoLayout->addSpacerItem(horizontalSpacer);
mAutoLayout->addWidget(forgetNetBox);
mAutoLayout->addWidget(autoConnect);
mAutoLayout->addSpacerItem(horizontalSpacer);
}
this->addDetailItem(m_listWidget, m_ssidWidget);
this->addDetailItem(m_listWidget, m_protocolWidget);
@ -179,7 +187,9 @@ void DetailPage::initUI() {
m_listWidget->setPalette(mpal);
layout->addWidget(mDetailFrame);
layout->addLayout(mAutoLayout);
if (mIsWlan) {
layout->addLayout(mAutoLayout);
}
}
void DetailPage::setEnableOfSaveBtn() {

View File

@ -241,7 +241,7 @@ bool Ipv4Page::getTextEditState(QString text)
return match;
}
bool Ipv4Page::getNetMaskState(QString text)
bool Ipv4Page::netMaskIsValide(QString text)
{
if (getTextEditState(text)) {
return true;

View File

@ -51,7 +51,7 @@ private:
void setLineEnabled(bool check);
void configSave();
bool getTextEditState(QString text);
bool getNetMaskState(QString text);
bool netMaskIsValide(QString text);
QString getNetMaskText(QString text);
bool checkConnectBtnIsEnabled();

View File

@ -16,9 +16,14 @@ void Ipv6Page::setIpv6Config(KyIpConfigType ipv6Config)
}
}
void Ipv6Page::setIpv6(const QString &ipv4)
void Ipv6Page::setIpv6(const QString &ipv6)
{
ipv6AddressEdit->setText(ipv4);
ipv6AddressEdit->setText(ipv6);
}
void Ipv6Page::setIpv6Perfix(const int &ipv6Perfix)
{
lengthEdit->setText(QString::number(ipv6Perfix));
}
void Ipv6Page::setIpv6FirDns(const QString &ipv6FirDns)
@ -58,7 +63,7 @@ bool Ipv6Page::checkIsChanged(const ConInfo info, KyConnectSetting &setting)
isChanged = true;
}
if(info.strIPV6Address != ipv6AddressEdit->text()
|| info.strIPV6Prefix != lengthEdit->text()
|| info.iIPV6Prefix != lengthEdit->text().toInt()
|| info.strIPV6GateWay != gateWayEdit->text()
|| info.strIPV6FirDns != firstDnsEdit->text()
|| info.strIPV6SecDns != secondDnsEdit->text()) {
@ -226,3 +231,26 @@ bool Ipv6Page::getIpv6EditState(QString text)
return match;
}
int Ipv6Page::getPerfixLength(QString text)
{
qDebug() << "getPerfixLength" << text;
int length = 0;
QStringList list= text.split(":");
for (int i = 0; i < list.size(); ++i) {
QString temp = list.at(i);
if (temp.isEmpty()) {
continue;
}
bool ok;
unsigned int val = temp.toUInt(&ok, 16);
temp = temp.setNum(val,2);
for(int j = 0; j < temp.length(); ++j) {
if (temp.at(j) == "1") {
length++;
}
}
}
qDebug() << "getPerfixLength" << length;
return length;
}

View File

@ -22,12 +22,15 @@ public:
Ipv6Page(QWidget *parent = nullptr);
void setIpv6Config(KyIpConfigType ipv6Config);
void setIpv6(const QString &ipv4);
void setIpv6Perfix(const int &ipv6Perfix);
void setIpv6FirDns(const QString &ipv6FirDns);
void setIpv6SecDns(const QString &ipv6SecDns);
void setGateWay(const QString &gateWay);
bool checkIsChanged(const ConInfo info, KyConnectSetting &setting);
int getPerfixLength(QString text);
public:
QComboBox *ipv6ConfigCombox;
QLineEdit *ipv6AddressEdit;
@ -52,7 +55,6 @@ private:
bool checkConnectBtnIsEnabled();
private slots:
void configChanged(int index);
void setEnableOfSaveBtn();

View File

@ -296,7 +296,7 @@ void NetDetail::initComponent()
stackWidget->setCurrentIndex(SECURITY_PAGE_NUM);
});
connect(confimBtn, SIGNAL(clicked()), this, SLOT(on_btnConfirm_clicked()));
if (!m_uuid.isEmpty()) {
if (isWlan && !m_uuid.isEmpty()) {
forgetBtn->show();
connect(forgetBtn, SIGNAL(clicked()), this, SLOT(on_btnForget_clicked()));
} else {
@ -362,10 +362,11 @@ void NetDetail::pagePadding(QString netName, bool isWlan)
//ipv6页面填充
if (m_info.ipv6ConfigType == CONFIG_IP_MANUAL) {
ipv6Page->setIpv6Config(m_info.ipv6ConfigType);
ipv6Page->setIpv6(m_info.strIPV4Address);
ipv6Page->setIpv6(m_info.strIPV6Address);
ipv6Page->setIpv6Perfix(m_info.iIPV6Prefix);
ipv6Page->setIpv6FirDns(m_info.strIPV6FirDns);
ipv6Page->setIpv6SecDns(m_info.strIPV4SecDns);
ipv6Page->setGateWay(m_info.strIPV4GateWay);
ipv6Page->setIpv6SecDns(m_info.strIPV6SecDns);
ipv6Page->setGateWay(m_info.strIPV6GateWay);
} else {
ipv6Page->setIpv6Config(m_info.ipv6ConfigType);
}
@ -411,13 +412,11 @@ void NetDetail::getBaseInfo(ConInfo &conInfo)
if (!hardAddress.isEmpty()) {
conInfo.strBandWidth = QString("%1").arg(bandWith/1000) + "Mbps";
conInfo.strMac = hardAddress;
}
if (!isWlan) {
conInfo.strConType = "802-3-ethernet";
if (!hardAddress.isEmpty()) {
conInfo.strMac = hardAddress;
}
} else {
conInfo.strConType = "802-11-wireless";
if (!isActive) {
@ -426,8 +425,6 @@ void NetDetail::getBaseInfo(ConInfo &conInfo)
qDebug() << "getWifiNetWork failed device:" << m_deviceName << " name:" << m_name;
return;
} else {
conInfo.strMac = item.m_bssid;
conInfo.strHz = QString::number(item.m_frequency);
conInfo.strChan = QString::number(item.m_channel);
//无线特有
@ -494,6 +491,7 @@ void NetDetail::getStaticIpInfo(ConInfo &conInfo, bool bActived)
KyConnectResourse *kyConnectResourse = new KyConnectResourse(this);
KyConnectSetting connetSetting;
kyConnectResourse->getConnectionSetting(m_uuid,connetSetting);
connetSetting.dumpInfo();
conInfo.ipv4ConfigType = connetSetting.m_ipv4ConfigIpType;
conInfo.ipv6ConfigType = connetSetting.m_ipv6ConfigIpType;
@ -516,7 +514,7 @@ void NetDetail::getStaticIpInfo(ConInfo &conInfo, bool bActived)
if (connetSetting.m_ipv6ConfigIpType == CONFIG_IP_MANUAL) {
if (connetSetting.m_ipv6Address.size() > 0) {
conInfo.strIPV6Address = connetSetting.m_ipv6Address.at(0).ip().toString();
conInfo.strIPV6Prefix = connetSetting.m_ipv6Address.at(0).netmask().toString();
conInfo.iIPV6Prefix = ipv6Page->getPerfixLength(connetSetting.m_ipv6Address.at(0).netmask().toString());
conInfo.strIPV6GateWay = connetSetting.m_ipv6Address.at(0).gateway().toString();
}