重新实现防火墙网络模式设置

This commit is contained in:
zhangyuanyuan1 2023-03-02 15:11:14 +08:00
parent feed0124d2
commit 97bd9c3f04
13 changed files with 71 additions and 467 deletions

View File

@ -1,104 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* Copyright (C) 2022 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 2 of the License, 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, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#include "firewalldialog.h"
#define ICON_SIZE 16,16
#define MEDIUM_WEIGHT_VALUE 57
FirewallDialog::FirewallDialog(QWidget *parent): KDialog(parent)
{
initUI();
this->setWindowIcon(QIcon::fromTheme("kylin-network"));
this->setFixedSize(480, 204);
setAttribute(Qt::WA_DeleteOnClose);
// centerToScreen();
}
FirewallDialog::~FirewallDialog()
{
}
void FirewallDialog::initUI()
{
m_iconLabel = new QLabel(this);
m_contentLabel = new FixLabel(this);
m_suggestLabel = new FixLabel(this);
m_PublicBtn = new QPushButton(this);
m_PrivateBtn = new QPushButton(this);
m_dialogLayout = new QVBoxLayout(this);
m_contentLabel->setFixedWidth(405);
m_suggestLabel->setFixedWidth(405);
QWidget *contentWidget = new QWidget(this);
QGridLayout *contentLayout = new QGridLayout(contentWidget);
contentLayout->setHorizontalSpacing(0);
contentLayout->setContentsMargins(0, 0, 0, 0);
contentLayout->addWidget(m_iconLabel, 0, 0);
contentLayout->addWidget(m_contentLabel, 0, 1);
contentLayout->addWidget(m_suggestLabel, 1, 1);
m_iconLabel->setFixedWidth(24);
QWidget *btnWidget = new QWidget(this);
QHBoxLayout *btnLayout = new QHBoxLayout(btnWidget);
btnLayout->setContentsMargins(0, 0, 0, 0);
btnLayout->setSpacing(16);
btnLayout->addStretch();
btnLayout->addWidget(m_PublicBtn);
btnLayout->addWidget(m_PrivateBtn);
m_dialogLayout->setContentsMargins(22, 16, 22, 24);
m_dialogLayout->setSpacing(0);
m_dialogLayout->addWidget(contentWidget);
m_dialogLayout->addStretch();
m_dialogLayout->addWidget(btnWidget);
QIcon icon = QIcon::fromTheme("dialog-info");
m_iconLabel->setPixmap(icon.pixmap(ICON_SIZE));
QFont font = m_contentLabel->font();
font.setWeight(MEDIUM_WEIGHT_VALUE);
m_contentLabel->setFont(font);
//是否允许此网络上的其他设备发现这台电脑?
m_contentLabel->setLabelText(tr("Allow other devices on this network to discover this computer?"));
//不建议在公共网络上开启此功能
m_suggestLabel->setLabelText(tr("It is not recommended to enable this feature on public networks"));
m_PublicBtn->setText(tr("Not allowed (recommended)"));
m_PrivateBtn->setText(tr("Allowed"));
this->closeButton();
this->mainWidget()->setLayout(m_dialogLayout);
connect(m_PublicBtn, &QPushButton::clicked, this, &FirewallDialog::setPublicNetMode);
connect(m_PrivateBtn, &QPushButton::clicked, this, &FirewallDialog::setPrivateNetMode);
}
void FirewallDialog::centerToScreen()
{
QDesktopWidget* m = QApplication::desktop();
QRect desk_rect = m->screenGeometry(m->screenNumber(QCursor::pos()));
int desk_x = desk_rect.width();
int desk_y = desk_rect.height();
int x = this->width();
int y = this->height();
this->move(desk_x / 2 - x / 2 + desk_rect.left(), desk_y / 2 - y / 2 + desk_rect.top());
}

View File

@ -1,70 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* Copyright (C) 2022 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 2 of the License, 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, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#ifndef FIREWALLDIALOG_H
#define FIREWALLDIALOG_H
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QFormLayout>
#include <QLabel>
#include <QDesktopWidget>
#include <QApplication>
#include "kwidget.h"
#include "kdialog.h"
#include <kylin-nm/kylinnetworkmanager.h>
#include "../component/FixLabel/fixlabel.h"
using namespace kdk;
class FirewallDialog : public KDialog
{
Q_OBJECT
public:
FirewallDialog(QWidget *parent = nullptr);
~FirewallDialog();
void setUuid(QString uuid) {
m_uuid = uuid;
}
void centerToScreen();
private:
void initUI();
QString m_uuid;
QLabel * m_iconLabel = nullptr;
FixLabel * m_contentLabel = nullptr;
FixLabel * m_suggestLabel = nullptr;
QVBoxLayout *m_dialogLayout = nullptr;
QPushButton *m_PublicBtn = nullptr;
QPushButton *m_PrivateBtn = nullptr;
Q_SIGNALS:
void setPublicNetMode();
void setPrivateNetMode();
public Q_SLOTS:
void closeMyself(QString uuid, KyConnectState status) {
if (uuid == m_uuid && status == CONNECT_STATE_DEACTIVATED) {
this->close();
}
}
};
#endif // FIREWALLDIALOG_H

View File

@ -1,90 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* Copyright (C) 2022 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 2 of the License, 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, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#include "networkmodeconfig.h"
#include <QDebug>
NetworkModeConfig *NetworkModeConfig::m_netModeInstance = nullptr;
NetworkModeConfig *NetworkModeConfig::getInstance()
{
if (m_netModeInstance == NULL) {
m_netModeInstance = new NetworkModeConfig();
}
return m_netModeInstance;
}
NetworkModeConfig::NetworkModeConfig(QObject *parent) : QObject(parent)
{
m_dbusInterface = new QDBusInterface("com.ksc.defender",
"/firewall",
"com.ksc.defender.firewall",
QDBusConnection::systemBus());
}
int NetworkModeConfig::getNetworkModeConfig(QString uuid)
{
if (uuid.isEmpty()) {
qWarning()<< /*LOG_FLAG <<*/ "uuid is empty, so can not get network mode config";
return -1;
}
if(!m_dbusInterface->isValid()) {
qWarning ()<< "init com.ksc.defender dbus error";
}
QDBusReply<int> reply = m_dbusInterface->call("get_networkModeConfig", uuid);
if (reply.isValid()) {
return reply.value();
} else {
qWarning() << "call get_networkModeConfig failed" << reply.error().message();
}
return -1;
}
void NetworkModeConfig::setNetworkModeConfig(QString uuid, QString cardName, QString ssid, int mode)
{
if(!m_dbusInterface->isValid()) {
qWarning ()<< "init com.ksc.defender dbus error";
}
QDBusReply<int> reply = m_dbusInterface->call("set_networkModeConfig", uuid, cardName, ssid, mode);
if (reply.isValid()) {
qDebug() << "set_networkModeConfig" << ssid << uuid << cardName << mode << ",result" << reply.value();
} else {
qWarning() << "call set_networkModeConfig" << reply.error().message();
}
}
int NetworkModeConfig::breakNetworkConnect(QString uuid, QString cardName, QString ssid)
{
if(!m_dbusInterface->isValid()) {
qWarning ()<< "init com.ksc.defender dbus error";
}
QDBusReply<int> reply = m_dbusInterface->call("break_networkConnect", uuid, cardName, ssid);
if (reply.isValid()) {
qDebug() << "break_networkConnect" << ssid << uuid << cardName << ",result" << reply.value();
return reply.value();
} else {
qWarning() << "call break_networkConnect failed" << reply.error().message();
return -1;
}
}

View File

@ -1,51 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
*
* Copyright (C) 2022 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 2 of the License, 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, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA.
*
*/
#ifndef NETWORKMODECONFIG_H
#define NETWORKMODECONFIG_H
#include <QObject>
#include <QDBusInterface>
#include <QDBusReply>
enum network_mode {
KSC_FIREWALL_PUBLIC = 0,
KSC_FIREWALL_PRIVATE
};
class NetworkModeConfig : public QObject
{
Q_OBJECT
public:
static NetworkModeConfig *getInstance();
//安全中心-获取网络模式配置
int getNetworkModeConfig(QString uuid);
//安全中心-设置网络模式配置
void setNetworkModeConfig(QString uuid, QString cardName, QString ssid, int mode);
//安全中心-解除连接(用于防火墙处从正在使用的网络中删除)
int breakNetworkConnect(QString uuid, QString cardName, QString ssid);
static NetworkModeConfig *m_netModeInstance;
private:
explicit NetworkModeConfig(QObject *parent = nullptr);
QDBusInterface *m_dbusInterface = nullptr;
};
#endif // NETWORKMODECONFIG_H

View File

@ -20,7 +20,6 @@
#include "netdetail.h"
//#include "../component/KylinArping/kylinipv4arping.h"
//#include "../component/KylinArping/kylinipv6arping.h"
#include "../component/NetworkMode/networkmodeconfig.h"
#define THEME_SCHAME "org.ukui.style"
@ -383,6 +382,7 @@ void NetDetail::initUI()
stackWidget->addWidget(configPage);
stackWidget->addWidget(createNetPage);
m_networkMode = NetworkModeType(getNetworkModeConfig(m_uuid));
// TabBar
m_netTabBar = new NetTabBar(this);
m_netTabBar->addTab(tr("Detail")); //详情
@ -390,14 +390,14 @@ void NetDetail::initUI()
m_netTabBar->addTab(tr("IPv6"));//Ipv6
if (isWlan) {
m_netTabBar->addTab(tr("Security"));//安全
if (isActive) {
if (isActive && m_networkMode != DBUS_INVAILD && m_networkMode != NO_CONFIG) {
m_netTabBar->addTab(tr("Config")); //配置
m_netTabBar->setFixedWidth(WLAN_TAB_WIDTH + TAB_WIDTH);
} else {
m_netTabBar->setFixedWidth(WLAN_TAB_WIDTH);
}
} else {
if (isActive) {
if (isActive && m_networkMode != DBUS_INVAILD && m_networkMode != NO_CONFIG) {
m_netTabBar->addTab(tr("Config")); //配置
m_netTabBar->setFixedWidth(LAN_TAB_WIDTH + TAB_WIDTH);
} else {
@ -606,8 +606,8 @@ void NetDetail::pagePadding(QString netName, bool isWlan)
}
//配置页面
if (isActive) {
configPage->setConfigState(NetworkModeConfig::getInstance()->getNetworkModeConfig(m_uuid));
if (isActive && m_networkMode != DBUS_INVAILD && m_networkMode != NO_CONFIG) {
configPage->setConfigState(m_networkMode);
}
}
@ -836,14 +836,14 @@ bool NetDetail::updateConnect()
}
//属性页 page5 config 网络模式配置
if (configPage != nullptr) {
int configType = NetworkModeConfig::getInstance()->getNetworkModeConfig(m_uuid);
if (m_networkMode != DBUS_INVAILD) {
int configType = getNetworkModeConfig(m_uuid);
bool configPageChange = configPage->checkIsChanged(configType);
int currentConfigType = configPage->getConfigState();
// qDebug () << Q_FUNC_INFO << __LINE__<< configPageChange;
if (configPageChange) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(m_uuid, m_deviceName, m_name, currentConfigType);
setNetworkModeConfig(m_uuid, m_deviceName, m_name, currentConfigType);
// qDebug () <<Q_FUNC_INFO << __LINE__ << m_uuid << m_deviceName << m_name << currentConfigType;
}
}
@ -944,6 +944,52 @@ void NetDetail::setNetTabToolTip()
}
}
int NetDetail::getNetworkModeConfig(QString uuid)
{
if (uuid.isEmpty()) {
qWarning()<< "[NetDetail] uuid is empty, so can not get network mode config";
return NO_CONFIG;
}
QDBusInterface firewallIface("com.ksc.defender",
"/firewall",
"com.ksc.defender.firewall",
QDBusConnection::systemBus());
if(!firewallIface.isValid()) {
qWarning ()<< "[NetDetail] com.ksc.defender.firewall dbus is invalid";
return DBUS_INVAILD;
}
QDBusReply<int> reply = firewallIface.call("get_networkModeConfig", uuid);
if (reply.isValid()) {
return reply.value();
} else {
qWarning() << "[NetDetail] call get_networkModeConfig failed" << reply.error().message();
}
return NO_CONFIG;
}
void NetDetail::setNetworkModeConfig(QString uuid, QString cardName, QString ssid, int mode)
{
QDBusInterface firewallIface("com.ksc.defender",
"/firewall",
"com.ksc.defender.firewall",
QDBusConnection::systemBus());
if(!firewallIface.isValid()) {
qWarning () << "[NetDetail] com.ksc.defender.firewall dbus is invalid";
return;
}
QDBusReply<int> reply = firewallIface.call("set_networkModeConfig", uuid, cardName, ssid, mode);
if (reply.isValid()) {
qDebug() << "[NetDetail] set_networkModeConfig" << ssid << uuid << cardName << mode << ",result" << reply.value();
} else {
qWarning() << "[NetDetail] call set_networkModeConfig" << reply.error().message();
}
}
NetTabBar::NetTabBar(QWidget *parent)
:KTabBar(KTabBarStyle::SegmentDark, parent)
{

View File

@ -57,6 +57,13 @@ using namespace kdk;
#define TAB_HEIGHT 36
#define TAB_HEIGHT_TABLET 48
enum NetworkModeType {
DBUS_INVAILD = -2,
NO_CONFIG = -1,
KSC_FIREWALL_PUBLIC = 0,
KSC_FIREWALL_PRIVATE
};
class NetTabBar : public KTabBar
{
Q_OBJECT
@ -133,6 +140,11 @@ private:
void startObjectThread();
void setNetTabToolTip();
//安全中心-获取网络模式配置
int getNetworkModeConfig(QString uuid);
//安全中心-设置网络模式配置
void setNetworkModeConfig(QString uuid, QString cardName, QString ssid, int mode);
private:
QStackedWidget * stackWidget;
@ -182,6 +194,7 @@ private:
KyDetailInfo m_detailInfo;
KyConnectSetting m_connectSetting;
KyWpaPasswordInfo m_pwdInfo;
NetworkModeType m_networkMode = DBUS_INVAILD;
private Q_SLOTS:
void onBtnConfirmClicked();

View File

@ -1,10 +0,0 @@
INCLUDEPATH += $$PWD
HEADERS += \
$$PWD/NetworkMode/firewalldialog.h \
$$PWD/NetworkMode/networkmodeconfig.h
SOURCES += \
$$PWD/NetworkMode/firewalldialog.cpp \
$$PWD/NetworkMode/networkmodeconfig.cpp

View File

@ -307,11 +307,6 @@ void NetConnect::initConnect()
connect(this, &NetConnect::updateIpv4AndIpv6SettingInfo, manager, &KyNetworkManager::onUpdateIpv4AndIpv6SettingInfo);
connect(this, &NetConnect::createWiredConnect, manager, &KyNetworkManager::onCreateWiredConnect);
connect(manager, &KyNetworkManager::wiredStateChange, this, [=](QString deviceName, QString uuid, KyConnectState status) {
KyConnectSetting connectSetting;
manager->getConnectIpInfo(uuid, connectSetting);
updateNetworkModeState(deviceName, connectSetting.m_connectName, uuid, status);
});
connect(manager, &KyNetworkManager::wiredStateChange, this, [=](QString deviceName, QString uuid, KyConnectState status) {
Q_EMIT connectStateChanged(uuid, status);
});
@ -499,10 +494,6 @@ void NetConnect::initNetListFromDevice(QString deviceName)
manager->getActiveConnectionList(deviceName, CONNECT_TYPE_WIRED, activateList);
if (activateList.size() != 0) {
onActiveConnectionChanged(deviceName, activateList.at(0).m_uuid, activateList.at(0).m_connStatus);
for (KyActivateItem item : activateList) {
initActiveNetworkMode(deviceName, item);
}
}
}
@ -522,7 +513,7 @@ void NetConnect::addLanItem(ItemFrame *frame, QString devName, KyWiredItem item)
lanItem->setUuid(item.m_connectUuid);
lanItem->setPath(item.m_connectPath);
//todo show detail page
//show detail page
connect(lanItem, &LanItem::infoButtonClick, this, [=]{
showLanDetailPage(devName, lanItem);
});
@ -729,7 +720,7 @@ void NetConnect::addOneLanFrame(ItemFrame *frame, QString deviceName, QStringLis
lanItem->setUuid(connUuid);
lanItem->setPath(connDbusPath);
// todo open landetail page
//open lan detail page
if (!m_isSimpleMode) {
connect(lanItem, &LanItem::infoButtonClick, this, [=]{
showLanDetailPage(deviceName, lanItem);
@ -998,58 +989,6 @@ void NetConnect::onDeviceRemove(QString deviceName)
}
}
void NetConnect::initActiveNetworkMode(QString deviceName, KyActivateItem activeItem)
{
int configType = NetworkModeConfig::getInstance()->getNetworkModeConfig(activeItem.m_uuid);
if (configType == -1) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(activeItem.m_uuid,
deviceName,
activeItem.m_connName,
KSC_FIREWALL_PUBLIC);
} else {
NetworkModeConfig::getInstance()->setNetworkModeConfig(activeItem.m_uuid,
deviceName,
activeItem.m_connName,
configType);
}
}
void NetConnect::updateNetworkModeState(QString deviceName, QString ssid, QString uuid, KyConnectState status)
{
if (status == CONNECT_STATE_ACTIVATED) {
int configType = NetworkModeConfig::getInstance()->getNetworkModeConfig(uuid);
if (configType == -1) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PUBLIC); //默认公有配置
FirewallDialog *fireWallDialog = new FirewallDialog(); //弹窗 供用户配置
fireWallDialog->setUuid(uuid);
fireWallDialog->setWindowTitle(ssid);
connect(fireWallDialog, &FirewallDialog::setPrivateNetMode, this, [=](){
fireWallDialog->hide();
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PRIVATE);
});
connect(fireWallDialog, &FirewallDialog::setPublicNetMode, this, [=](){
fireWallDialog->hide();
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PUBLIC);
});
connect(this, &NetConnect::connectStateChanged, fireWallDialog, &FirewallDialog::closeMyself);
fireWallDialog->show();
fireWallDialog->centerToScreen();
} else if (configType == KSC_FIREWALL_PUBLIC) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PUBLIC);
} else if (configType == KSC_FIREWALL_PRIVATE) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PRIVATE);
}
} else if (status == CONNECT_STATE_DEACTIVATED) {
NetworkModeConfig::getInstance()->breakNetworkConnect(uuid, deviceName, ssid);
}
}
void NetConnect::showDetailPage(QString deviceName, QString ssid)
{
if (deviceName.isEmpty() || ssid.isEmpty()) {

View File

@ -57,8 +57,6 @@ using namespace kdk;
#include "itemframe.h"
#include "../component/Divider/divider.h"
#include "../component/Pages/netdetail.h"
#include "../component/NetworkMode/networkmodeconfig.h"
#include "../component/NetworkMode/firewalldialog.h"
enum {
DISCONNECTED,
@ -125,8 +123,6 @@ private:
//显示网络属性页
void showLanDetailPage(QString deviceName, LanItem *item);
//初始化已激活网络的网络模式
void initActiveNetworkMode(QString deviceName, KyActivateItem activeItem);
protected:
bool eventFilter(QObject *w,QEvent *e);
@ -198,7 +194,6 @@ private Q_SLOTS:
void onDeviceAdd(QString deviceName);
void onDeviceRemove(QString deviceName);
void updateNetworkModeState(QString deviceName, QString ssid, QString uuid, KyConnectState status);
//for dbus
void showDetailPage(QString deviceName, QString connName);

View File

@ -10,7 +10,6 @@ include(../component/fixlabel.pri)
include(../component/listitemedit.pri)
include(../component/pages.pri)
include(../component/kylinarping.pri)
include(../component/networkmode.pri)
TARGET = $$qtLibraryTarget(netconnect)
DESTDIR = ../..

View File

@ -358,7 +358,6 @@ void WlanConnect::initConnect()
connect(this, &WlanConnect::setWirelessNetworkEnabled, manager, &KyNetworkManager::onSetWirelessNetworkEnabled);
connect(this, &WlanConnect::deleteConnect, manager, &KyNetworkManager::onDeleteConnect);
connect(manager, &KyNetworkManager::wirelessStateChange, this, &WlanConnect::updateNetworkModeState);
connect(manager, &KyNetworkManager::wirelessStateChange, this, [=](QString deviceName, QString ssid, QString uuid, KyConnectState status) {
Q_EMIT connectStateChanged(uuid, status);
});
@ -707,10 +706,6 @@ void WlanConnect::initNetListFromDevice(QString deviceName)
manager->getActiveConnectionList(deviceName, CONNECT_TYPE_WIRELESS, activateList);
if (activateList.size() != 0) {
onActiveConnectionChanged(deviceName,activateList.at(0).m_ssid, activateList.at(0).m_uuid, activateList.at(0).m_connStatus);
for (KyActivateItem item : activateList) {
initActiveNetworkMode(deviceName, item);
}
}
}
@ -1079,58 +1074,6 @@ void WlanConnect::showWlanDetailPage(QString deviceName, WlanItem *item)
});
}
void WlanConnect::initActiveNetworkMode(QString deviceName, KyActivateItem activeItem)
{
int configType = NetworkModeConfig::getInstance()->getNetworkModeConfig(activeItem.m_uuid);
if (configType == -1) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(activeItem.m_uuid,
deviceName,
activeItem.m_connName,
KSC_FIREWALL_PUBLIC);
} else {
NetworkModeConfig::getInstance()->setNetworkModeConfig(activeItem.m_uuid,
deviceName,
activeItem.m_connName,
configType);
}
}
void WlanConnect::updateNetworkModeState(QString deviceName, QString ssid, QString uuid, KyConnectState status)
{
if (status == CONNECT_STATE_ACTIVATED) {
int configType = NetworkModeConfig::getInstance()->getNetworkModeConfig(uuid);
if (configType == -1) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PUBLIC); //默认公有配置
FirewallDialog *fireWallDialog = new FirewallDialog(); //弹窗 供用户配置
fireWallDialog->setUuid(uuid);
fireWallDialog->setWindowTitle(ssid);
connect(fireWallDialog, &FirewallDialog::setPrivateNetMode, this, [=](){
fireWallDialog->hide();
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PRIVATE);
});
connect(fireWallDialog, &FirewallDialog::setPublicNetMode, this, [=](){
fireWallDialog->hide();
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PUBLIC);
});
connect(this, &WlanConnect::connectStateChanged, fireWallDialog, &FirewallDialog::closeMyself);
fireWallDialog->show();
fireWallDialog->centerToScreen();
} else if (configType == KSC_FIREWALL_PUBLIC) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PUBLIC);
} else if (configType == KSC_FIREWALL_PRIVATE) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PRIVATE);
}
} else if (status == CONNECT_STATE_DEACTIVATED) {
NetworkModeConfig::getInstance()->breakNetworkConnect(uuid, deviceName, ssid);
}
}
void WlanConnect::showDetailPage(QString deviceName, QString ssid)
{
if (deviceName.isEmpty() || ssid.isEmpty()) {
@ -1162,6 +1105,7 @@ void WlanConnect::activateWirelessConnection(QString deviceName, QString ssid)
if (nullptr == item) {
return;
}
Q_EMIT item->itemClick(); //todo-20230228
QDBusInterface interface("com.kylin.network",
"/com/kylin/network",
@ -1170,6 +1114,4 @@ void WlanConnect::activateWirelessConnection(QString deviceName, QString ssid)
if(interface.isValid()) {
interface.call(QStringLiteral("showKylinNM"), 1);
}
Q_EMIT item->itemClick();//todo-20230228
}

View File

@ -57,8 +57,6 @@ using namespace kdk;
#include "wlanitem.h"
#include "hiddenwifi/enterprisewlanpage.h"
#include "../component/Pages/netdetail.h"
#include "../component/NetworkMode/networkmodeconfig.h"
#include "../component/NetworkMode/firewalldialog.h"
class WlanConnect : public QObject, Interface
{
@ -126,8 +124,7 @@ private:
void setOtherItemExpandedFalse(QString devName, QString ssid);
//显示网络属性页
void showWlanDetailPage(QString deviceName, WlanItem *item);
//初始化已激活网络的网络模式
void initActiveNetworkMode(QString deviceName, KyActivateItem activeItem);
protected:
bool eventFilter(QObject *w,QEvent *e);
@ -213,7 +210,6 @@ private Q_SLOTS:
void onWirelessConnectionUpdate(QString deviceName, QString ssid, QString uuid, QString dbusPath, KySecuType connectSecuType);
void onWirelessDeviceAdd(QString deviceName);
void onWirelessDeviceRemove(QString deviceName);
void updateNetworkModeState(QString deviceName, QString ssid, QString uuid, KyConnectState status);
//for dbus
void showDetailPage(QString deviceName, QString ssid);

View File

@ -10,7 +10,6 @@ include(../component/fixlabel.pri)
include(../component/listitemedit.pri)
include(../component/pages.pri)
include(../component/kylinarping.pri)
include(../component/networkmode.pri)
include(hiddenwifi/hiddenwifi.pri)
TARGET = $$qtLibraryTarget(wlanconnect)