合并冲突,修改有线开关问题

This commit is contained in:
jzxc95 2022-09-22 17:09:45 +08:00
commit 4c56fe9bdf
43 changed files with 1967 additions and 1152 deletions

2
debian/control vendored
View File

@ -35,7 +35,7 @@ Vcs-Browser: https://github.com/ukui/kylin-nm
Package: kylin-nm
Architecture: any
Depends: network-manager (>=1.2.6),
Depends: network-manager (>= 1.22.10-1kylin29k3.6),
ukui-control-center (>= 3.1.1+1217),
libkysdk-qtwidgets(>= 1.2.0),
libkysdk-waylandhelper(>= 1.2.0kylin2),

View File

@ -538,8 +538,8 @@ void MobileHotspotWidget::setFreqBandFrame()
m_freqBandComboBox->setInsertPolicy(QComboBox::NoInsert);
m_freqBandComboBox->setMinimumWidth(COMBOBOX_MIN_WIDTH);
m_freqBandComboBox->setSizePolicy(QSizePolicy::Expanding,QSizePolicy::Fixed);
m_freqBandComboBox->addItem("2.4Ghz");
m_freqBandComboBox->addItem("5Ghz");
m_freqBandComboBox->addItem("2.4GHz");
m_freqBandComboBox->addItem("5GHz");
freqBandHLayout->setContentsMargins(ITEM_MARGINS);
freqBandHLayout->setSpacing(0);
freqBandHLayout->addWidget(m_freqBandLabel);
@ -746,10 +746,10 @@ void MobileHotspotWidget::updateBandCombox()
}
QMap<QString, int> devCapMap = capReply.value();
if (devCapMap[m_interfaceName] & 0x02) {
m_freqBandComboBox->addItem("2.4Ghz");
m_freqBandComboBox->addItem("2.4GHz");
}
if (devCapMap[m_interfaceName] & 0x04) {
m_freqBandComboBox->addItem("5Ghz");
m_freqBandComboBox->addItem("5GHz");
}
}

View File

@ -148,7 +148,6 @@ WlanConnect::~WlanConnect()
ui = nullptr;
}
delete m_interface;
delete m_switchGsettings;
}
QString WlanConnect::plugini18nName() {
@ -224,10 +223,10 @@ bool WlanConnect::eventFilter(QObject *w, QEvent *e) {
if (w == m_wifiSwitch) {
if (e->type() == QMouseEvent::MouseButtonRelease) {
if (!m_wifiSwitch->isCheckable()) {
if (!getSwitchBtnEnable()) {
showDesktopNotify(tr("No wireless network card detected"));
} else {
m_interface->call(QStringLiteral("setWirelessSwitchEnable"), !m_wifiSwitch->isChecked());
m_interface->call(QStringLiteral("setWirelessSwitchEnable"), !getSwitchBtnState());
return true;
}
}
@ -246,33 +245,18 @@ void WlanConnect::initComponent() {
m_wifiSwitch->installEventFilter(this);
//开关
if (QGSettings::isSchemaInstalled(GSETTINGS_SCHEMA)) {
m_switchGsettings = new QGSettings(GSETTINGS_SCHEMA);
setSwitchStatus();
connect(m_switchGsettings, &QGSettings::changed, this, [=] (const QString &key) {
if (key == WIRELESS_SWITCH) {
setSwitchStatus();
}
});
} else {
m_wifiSwitch->blockSignals(true);
m_wifiSwitch->setChecked(true);
m_wifiSwitch->blockSignals(false);
qDebug()<<"[netconnect] org.ukui.kylin-nm.switch is not installed!";
}
initSwtichState();
//获取设备列表
getDeviceList(deviceList);
if (deviceList.isEmpty()) {
qDebug() << "[WlanConnect]no device exist when init, set switch disable";
m_wifiSwitch->setChecked(false);
m_wifiSwitch->setCheckable(false);
setSwitchBtnState(false);
setSwitchBtnEnable(false);
}
initNet();
if (!m_wifiSwitch->isChecked() || deviceList.isEmpty() || !m_interface->isValid()) {
if (!getSwitchBtnState() || deviceList.isEmpty() || !m_interface->isValid()) {
hideLayout(ui->availableLayout);
}
@ -288,7 +272,8 @@ void WlanConnect::initComponent() {
// connect(m_interface, SIGNAL(signalStrengthChange(QString, QString, int)), this, SLOT(updateStrengthList(QString, QString, int)));
//网卡name处理
connect(m_interface, SIGNAL(deviceNameChanged(QString, QString, int)), this, SLOT(onDeviceNameChanged(QString, QString, int)), Qt::QueuedConnection);
connect(m_interface, SIGNAL(wirelessSwitchBtnChanged(bool)), this, SLOT(onSwitchBtnChanged(bool)), Qt::QueuedConnection);
connect(m_interface, SIGNAL(timeToUpdate()), this, SLOT(updateList()), Qt::QueuedConnection);
//高级设置
connect(ui->detailBtn, &QPushButton::clicked, this, [=](bool checked) {
@ -320,7 +305,7 @@ void WlanConnect::reScan()
//更新列表顺序
void WlanConnect::updateList()
{
if (!m_wifiSwitch->isChecked()) {
if (!getSwitchBtnState()) {
return;
}
qDebug() << "update list";
@ -525,11 +510,11 @@ void WlanConnect::onDeviceStatusChanged()
}
deviceList = list;
if (deviceList.isEmpty()) {
m_wifiSwitch->setChecked(false);
m_wifiSwitch->setCheckable(false);
setSwitchBtnState(false);
setSwitchBtnEnable(false);
} else {
m_wifiSwitch->setCheckable(true);
setSwitchStatus();
setSwitchBtnEnable(true);
initSwtichState();
}
}
@ -558,10 +543,24 @@ void WlanConnect::onDeviceNameChanged(QString oldName, QString newName, int type
}
}
void WlanConnect::onSwitchBtnChanged(bool state)
{
if (getSwitchBtnState() == state) {
return;
}
setSwitchBtnState(state);
if (!getSwitchBtnState()) {
hideLayout(ui->availableLayout);
} else {
showLayout(ui->availableLayout);
}
}
//activeconnect status change
void WlanConnect::onActiveConnectionChanged(QString deviceName, QString ssid, QString uuid, int status)
{
if (!m_wifiSwitch->isChecked()) {
if (!getSwitchBtnState()) {
return;
}
if (uuid.isEmpty()) {
@ -623,7 +622,7 @@ void WlanConnect::onActiveConnectionChanged(QString deviceName, QString ssid, QS
void WlanConnect::onNetworkAdd(QString deviceName, QStringList wlanInfo)
{
qDebug()<<"[WlanConnect]onNetworkAdd "<< deviceName << " " << wlanInfo;
if(!m_wifiSwitch->isChecked() || deviceName.isEmpty()) {
if(!getSwitchBtnState() || deviceName.isEmpty()) {
return;
}
@ -693,25 +692,22 @@ void WlanConnect::getDeviceList(QStringList &list)
list = map.keys();
}
//设置开关
void WlanConnect::setSwitchStatus()
void WlanConnect::initSwtichState()
{
// if (deviceList.size() == 0) {
// m_wifiSwitch->blockSignals(true);
// m_wifiSwitch->setChecked(false);
// m_wifiSwitch->blockSignals(false);
// return;
// }
bool status = m_switchGsettings->get(WIRELESS_SWITCH).toBool();
qDebug() << "[WlanConnect]setSwitchStatus" << status;
m_wifiSwitch->blockSignals(true);
m_wifiSwitch->setChecked(status);
m_wifiSwitch->blockSignals(false);
if (!m_wifiSwitch->isChecked()) {
hideLayout(ui->availableLayout);
} else {
showLayout(ui->availableLayout);
if (!m_interface->isValid()) {
return;
}
QDBusMessage result = m_interface->call("getWirelessSwitchBtnState");
qDebug() << "[WlanConnect]call getWirelessSwitchBtnState respond" << __LINE__;
if(result.type() == QDBusMessage::ErrorMessage)
{
qWarning() << "[WlanConnect]getWirelessSwitchBtnState error:" << result.errorMessage();
return;
}
bool state = result.arguments().at(0).toBool();
setSwitchBtnState(state);
}
//初始化整体列表和单设备列表
@ -731,7 +727,7 @@ void WlanConnect::initNet() {
void WlanConnect::initNetListFromDevice(QString deviceName)
{
qDebug() << "[WlanConnect]initNetListFromDevice " << deviceName;
if (!m_wifiSwitch->isChecked()) {
if (!getSwitchBtnState()) {
qDebug() << "[WlanConnect]initNetListFromDevice " << deviceName << " switch off";
return;
}

View File

@ -98,7 +98,6 @@ private:
//开关相关
void setSwitchStatus();
void hideLayout(QVBoxLayout * layout);
void showLayout(QVBoxLayout * layout);
@ -124,6 +123,33 @@ private:
//单个wifi连接状态变化
void itemActiveConnectionStatusChanged(WlanItem *item, int status);
void initSwtichState();
inline void setSwitchBtnEnable(bool state) {
if (m_wifiSwitch != nullptr) {
m_wifiSwitch->setCheckable(state);
}
}
inline bool getSwitchBtnEnable() {
if (m_wifiSwitch != nullptr) {
return m_wifiSwitch->isCheckable();
}
}
inline void setSwitchBtnState(bool state) {
if (m_wifiSwitch != nullptr) {
m_wifiSwitch->blockSignals(true);
m_wifiSwitch->setChecked(state);
m_wifiSwitch->blockSignals(false);
}
}
inline bool getSwitchBtnState() {
if (m_wifiSwitch != nullptr) {
return m_wifiSwitch->isChecked();
}
}
protected:
bool eventFilter(QObject *w,QEvent *e);
@ -136,8 +162,6 @@ private:
QDBusInterface *m_interface = nullptr;
QGSettings *m_switchGsettings = nullptr;
//设备列表
QStringList deviceList;
//设备名 + 单设备frame
@ -162,6 +186,8 @@ private slots:
void onDeviceStatusChanged();
void onDeviceNameChanged(QString, QString, int);
void onSwitchBtnChanged(bool);
void reScan();

View File

@ -27,6 +27,8 @@
KyNetworkDeviceResourse::KyNetworkDeviceResourse(QObject *parent) : QObject(parent)
{
qRegisterMetaType<NetworkManager::Device::State>("NetworkManager::Device::State");
qRegisterMetaType<NetworkManager::Device::StateChangeReason>("NetworkManager::Device::StateChangeReason");
m_networkResourceInstance = KyNetworkResourceManager::getInstance();
m_deviceMap.clear();
@ -40,6 +42,9 @@ KyNetworkDeviceResourse::KyNetworkDeviceResourse(QObject *parent) : QObject(pare
connect(m_networkResourceInstance, &KyNetworkResourceManager::deviceUpdate,
this, &KyNetworkDeviceResourse::onDeviceUpdate, Qt::ConnectionType::DirectConnection);
connect(m_networkResourceInstance, &KyNetworkResourceManager::stateChanged,
this, &KyNetworkDeviceResourse::stateChanged, Qt::ConnectionType::DirectConnection);
connect(m_networkResourceInstance, &KyNetworkResourceManager::deviceCarrierChanage,
this, &KyNetworkDeviceResourse::carrierChanage);
connect(m_networkResourceInstance, &KyNetworkResourceManager::deviceBitRateChanage,

View File

@ -45,6 +45,7 @@ Q_SIGNALS:
void deviceMacAddressChanage(QString deviceName, const QString &hwAddress);
void deviceActiveChanage(QString deviceName, bool deivceActive);
void deviceManagedChange(QString deviceName, bool managed);
void stateChanged(NetworkManager::Device::State newstate, NetworkManager::Device::State oldstate, NetworkManager::Device::StateChangeReason reason);
public Q_SLOTS:
void onDeviceAdd(QString deviceName, QString uni, NetworkManager::Device::Type deviceType);

View File

@ -50,6 +50,8 @@ KyNetworkResourceManager::KyNetworkResourceManager(QObject *parent) : QObject(pa
qRegisterMetaType<NetworkManager::Connectivity>("NetworkManager::Connectivity");
qRegisterMetaType<NetworkManager::ActiveConnection::Reason>("NetworkManager::ActiveConnection::Reason");
qRegisterMetaType<NetworkManager::Device::Type>("NetworkManager::Device::Type");
qRegisterMetaType<NetworkManager::Device::State>("NetworkManager::Device::State");
qRegisterMetaType<NetworkManager::Device::StateChangeReason>("NetworkManager::Device::StateChangeReason");
QDBusConnection::systemBus().connect(QString("org.freedesktop.DBus"),
QString("/org/freedesktop/DBus"),
@ -269,6 +271,7 @@ void KyNetworkResourceManager::addDevice(NetworkManager::Device::Ptr device)
#endif
connect(qobject_cast<NetworkManager::WirelessDevice *>(device.data()), &NetworkManager::WirelessDevice::networkAppeared, this, &KyNetworkResourceManager::onWifiNetworkAppeared);
connect(qobject_cast<NetworkManager::WirelessDevice *>(device.data()), &NetworkManager::WirelessDevice::networkDisappeared, this, &KyNetworkResourceManager::onWifiNetworkDisappeared);
connect(device.data(), &NetworkManager::Device::stateChanged, this, &KyNetworkResourceManager::stateChanged);
break;
default:
//TODO: other device types!

View File

@ -139,6 +139,8 @@ Q_SIGNALS:
NetworkManager::VpnConnection::StateChangeReason reason);
void connectivityChanged(NetworkManager::Connectivity connectivity);
void stateChanged(NetworkManager::Device::State newstate, NetworkManager::Device::State oldstate, NetworkManager::Device::StateChangeReason reason);
public Q_SLOTS:
void onInitNetwork();

View File

@ -50,6 +50,11 @@ QMap<QString, QVector<QStringList> > DbusAdaptor::getWirelessList()
return map;
}
bool DbusAdaptor::getWirelessSwitchBtnState()
{
return parent()->getWirelessSwitchBtnState();
}
//有线列表
QMap<QString, QVector<QStringList>> DbusAdaptor::getWiredList()
{

View File

@ -92,6 +92,9 @@ public Q_SLOTS: // METHODS
void keyRingClear();
//just show
void showKylinNM(int type);
bool getWirelessSwitchBtnState();
Q_SIGNALS: // SIGNALS
// void wirelessActivating(QString devName, QString ssid);
// void wiredActivating(QString devName, QString ssid);
@ -108,6 +111,7 @@ Q_SIGNALS: // SIGNALS
//设备插拔
void deviceStatusChanged();
void deviceNameChanged(QString oldName, QString newName, int type);
void wirelessSwitchBtnChanged(bool state);
//热点断开
void hotspotDeactivated(QString devName, QString ssid);
//热点连接

View File

@ -21,27 +21,37 @@
#include <QApplication>
#include <QDesktopWidget>
#include "xatom-helper.h"
#define MAIN_SIZE_EXPAND 400,500
#define MAIN_SIZE_NARROW 400,400
#define MAIN_SIZE_EXPAND 480,580
#define MAIN_SIZE_NARROW 480,484
#define PEAP_SCRO_HEIGHT 390
#define TLS_SCRO_HEIGHT 590
#define MAIN_LAYOUT_MARGINS 0,0,0,0
#define CENTER_LAYOUT_MARGINS 24, 16, 24, 8
#define BUTTON_LAYOUT_MARGINS 24, 24, 24, 24
#define MAIN_LAYOUT_SPACING 0
#define BUTTON_SPACING 16
#define LABEL_MIN_WIDTH 146
#define MEDIUM_WEIGHT_VALUE 57
#define THEME_SCHAME "org.ukui.style"
#define COLOR_THEME "styleName"
EnterpriseWlanDialog::EnterpriseWlanDialog(KyWirelessNetItem &wirelessNetItem, QString device, QWidget *parent) : QWidget(parent)
{
//设置窗口无边框,阴影
#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
MotifWmHints window_hints;
window_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
window_hints.functions = MWM_FUNC_ALL;
window_hints.decorations = MWM_DECOR_BORDER;
XAtomHelper::getInstance()->setWindowMotifHint(this->winId(), window_hints);
#else
this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
#endif
// //设置窗口无边框,阴影
//#if (QT_VERSION >= QT_VERSION_CHECK(5, 12, 0))
// MotifWmHints window_hints;
// window_hints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS;
// window_hints.functions = MWM_FUNC_ALL;
// window_hints.decorations = MWM_DECOR_BORDER;
// XAtomHelper::getInstance()->setWindowMotifHint(this->winId(), window_hints);
//#else
// this->setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint);
//#endif
this->setAttribute(Qt::WA_DeleteOnClose);
this->setWindowFlag(Qt::Window);
this->setWindowTitle(tr("Connect Enterprise WLAN"));
// this->setWindowTitle(tr("Connect Enterprise WLAN"));
this->setWindowIcon(QIcon::fromTheme("kylin-network"));
m_wirelessNetItem = wirelessNetItem;
m_deviceName = device;
@ -70,49 +80,79 @@ void EnterpriseWlanDialog::closeEvent(QCloseEvent *event)
return QWidget::closeEvent(event);
}
void EnterpriseWlanDialog::paintEvent(QPaintEvent *event)
{
QPalette pal = qApp->palette();
QPainter painter(this);
painter.setBrush(pal.color(QPalette::Base));
painter.drawRect(this->rect());
painter.fillRect(rect(), QBrush(pal.color(QPalette::Base)));
return QWidget::paintEvent(event);
}
void EnterpriseWlanDialog::initUI()
{
#define MAIN_LAYOUT_MARGINS 8,8,8,8
#define SSID_LAYOUT_MARGINS 8,8,8,0
#define MAIN_LAYOUT_SPACING 0
#define BUTTON_SPACING 8
m_mainLayout = new QVBoxLayout(this);
this->setLayout(m_mainLayout);
m_mainLayout->setContentsMargins(MAIN_LAYOUT_MARGINS);
m_mainLayout->setSpacing(MAIN_LAYOUT_SPACING);
m_ssidLayout = new QHBoxLayout();
m_ssidLayout->setContentsMargins(SSID_LAYOUT_MARGINS);
m_ssidTitleLabel = new QLabel(this);
m_ssidTitleLabel->setText("SSID");
m_centerWidget = new QWidget(this);
QVBoxLayout *centerLayout = new QVBoxLayout(m_centerWidget);
centerLayout->setContentsMargins(CENTER_LAYOUT_MARGINS);
centerLayout->setSpacing(MAIN_LAYOUT_SPACING);
m_descriptionLabel = new QLabel(this);
m_descriptionLabel->setText(tr("Wi-Fi network requires authentication")); //Wi-Fi网络要求认证
QFont font = m_descriptionLabel->font();
font.setWeight(MEDIUM_WEIGHT_VALUE);
m_descriptionLabel->setFont(font);
m_ssidLabel = new QLabel(this);
m_ssidLabel->setText(m_wirelessNetItem.m_NetSsid);
m_ssidLayout->addWidget(m_ssidTitleLabel);
m_ssidLayout->addStretch();
m_ssidLayout->addWidget(m_ssidLabel);
m_securityPage = new SecurityPage(this);
QString str = tr("Access to Wi-Fi network \""); //访问Wi-Fi网络
str.append(m_wirelessNetItem.m_NetSsid);
str.append(tr("\" requires a password or encryption key.")); //需要密码或加密秘钥
m_ssidLabel->setText(str);
m_ssidLabel->setWordWrap(true);
m_securityPage = new SecurityPage(false, this);
m_securityPage->setSecurity(KySecuType::WPA_AND_WPA2_ENTERPRISE);
m_securityPage->setSecurityVisible(false);
// m_securityPage->setSecurityVisible(false);
m_btnLayout = new QHBoxLayout();
m_btnLayout->setSpacing(BUTTON_SPACING);
centerLayout->addWidget(m_descriptionLabel);
centerLayout->addSpacing(8);
centerLayout->addWidget(m_ssidLabel);
centerLayout->addSpacing(BUTTON_SPACING);
centerLayout->addWidget(m_securityPage);
centerLayout->addStretch();
m_enterWlanScrollArea = new QScrollArea(this);
m_enterWlanScrollArea->setFrameShape(QFrame::NoFrame);
m_enterWlanScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
m_enterWlanScrollArea->setWidget(m_centerWidget);
QPalette pal = m_enterWlanScrollArea->palette();
pal.setBrush(QPalette::Window, Qt::transparent);
m_enterWlanScrollArea->setPalette(pal);
m_bottomDivider = new Divider(this);
QWidget *bottomWidget = new QWidget(this);
QHBoxLayout *btnLayout = new QHBoxLayout(bottomWidget);
btnLayout->setContentsMargins(BUTTON_LAYOUT_MARGINS);
btnLayout->setSpacing(BUTTON_SPACING);
m_cancelBtn = new QPushButton(this);
m_connectBtn = new QPushButton(this);
m_cancelBtn->setText(tr("Cancel"));
m_connectBtn->setText(tr("Connect"));
m_connectBtn->setEnabled(false);
m_btnLayout->addStretch();
m_btnLayout->addWidget(m_cancelBtn);
m_btnLayout->addWidget(m_connectBtn);
m_mainLayout->addLayout(m_ssidLayout);
m_mainLayout->addWidget(m_securityPage);
m_mainLayout->addLayout(m_btnLayout);
m_mainLayout->addStretch();
btnLayout->addStretch();
btnLayout->addWidget(m_cancelBtn);
btnLayout->addWidget(m_connectBtn);
m_mainLayout->addWidget(m_enterWlanScrollArea);
m_mainLayout->addWidget(m_bottomDivider);
m_mainLayout->addWidget(bottomWidget);
this->setFixedSize(MAIN_SIZE_EXPAND);
this->setWindowTitle(m_wirelessNetItem.m_NetSsid);
initConnections();
onPaletteChanged();
}
@ -145,15 +185,15 @@ void EnterpriseWlanDialog::onPaletteChanged()
{
QPalette pal = qApp->palette();
QGSettings * styleGsettings = nullptr;
const QByteArray style_id(THEME_SCHAME);
if (QGSettings::isSchemaInstalled(style_id)) {
styleGsettings = new QGSettings(style_id);
QString currentTheme = styleGsettings->get(COLOR_THEME).toString();
if(currentTheme == "ukui-default"){
pal = lightPalette(this);
}
}
// QGSettings * styleGsettings = nullptr;
// const QByteArray style_id(THEME_SCHAME);
// if (QGSettings::isSchemaInstalled(style_id)) {
// styleGsettings = new QGSettings(style_id);
// QString currentTheme = styleGsettings->get(COLOR_THEME).toString();
// if(currentTheme == "ukui-default"){
// pal = lightPalette(this);
// }
// }
this->setPalette(pal);
@ -184,7 +224,7 @@ void EnterpriseWlanDialog::onBtnConnectClicked()
KyWirelessConnectSetting connetSetting;
connetSetting.setConnectName(m_wirelessNetItem.m_NetSsid);
connetSetting.setIfaceName(m_deviceName);
connetSetting.isAutoConnect = true; //ZJP_TODO 自动连接选项
// connetSetting.isAutoConnect = true; //ZJP_TODO 自动连接选项
connetSetting.m_type = KyKeyMgmt::WpaEap;
connetSetting.m_ssid = m_wirelessNetItem.m_NetSsid;
connetSetting.m_secretFlag = 0;
@ -214,18 +254,21 @@ void EnterpriseWlanDialog::onEapTypeChanged(const KyEapMethodType &type)
m_resource->getEnterPriseInfoTls(m_wirelessNetItem.m_connectUuid, m_info.tlsInfo);
}
this->setFixedSize(MAIN_SIZE_EXPAND);
m_centerWidget->setFixedHeight(TLS_SCRO_HEIGHT);
break;
case KyEapMethodType::PEAP:
if (m_wirelessNetItem.m_connectUuid.isEmpty()) {
m_resource->getEnterPriseInfoPeap(m_wirelessNetItem.m_connectUuid, m_info.peapInfo);
}
this->setFixedSize(MAIN_SIZE_NARROW);
m_centerWidget->setFixedHeight(PEAP_SCRO_HEIGHT);
break;
case KyEapMethodType::TTLS:
if (!m_wirelessNetItem.m_connectUuid.isEmpty()) {
m_resource->getEnterPriseInfoTtls(m_wirelessNetItem.m_connectUuid, m_info.ttlsInfo);
}
this->setFixedSize(MAIN_SIZE_NARROW);
m_centerWidget->setFixedHeight(PEAP_SCRO_HEIGHT);
break;
default:
break;

View File

@ -21,7 +21,11 @@
#define ENTERPRISEWLANDIALOG_H
#include <QDialog>
#include <QPushButton>
#include <QScrollArea>
#include <QPainter>
#include "securitypage.h"
#include "divider.h"
#include "kywirelessnetitem.h"
#include "coninfo.h"
@ -34,6 +38,7 @@ public:
protected:
void closeEvent(QCloseEvent *event);
void paintEvent(QPaintEvent *event);
private:
void initUI(); //初始化UI界面
@ -62,13 +67,16 @@ private:
QLabel *m_titleLabel = nullptr;
QPushButton *m_closeBtn = nullptr;
QHBoxLayout *m_ssidLayout = nullptr;
QLabel *m_ssidTitleLabel = nullptr;
QWidget *m_centerWidget = nullptr;
QLabel *m_descriptionLabel = nullptr;
QLabel *m_ssidLabel = nullptr;
SecurityPage *m_securityPage = nullptr;
QHBoxLayout *m_btnLayout = nullptr;
QScrollArea *m_enterWlanScrollArea = nullptr;
Divider *m_bottomDivider = nullptr;
QPushButton *m_cancelBtn = nullptr;
QPushButton *m_connectBtn = nullptr;

View File

@ -79,6 +79,11 @@ QString WlanListItem::getSsid()
return m_wirelessNetItem.m_NetSsid;
}
QString WlanListItem::getUuid()
{
return m_wirelessNetItem.m_connectUuid;
}
void WlanListItem::setSignalStrength(const int &signal)
{
m_wirelessNetItem.m_signalStrength = signal;
@ -448,13 +453,34 @@ void WlanListItem::onNetButtonClicked()
return;
}
//获取有配置网络的安全类型
KyKeyMgmt type = m_wirelessConnectOperation->getConnectKeyMgmt(m_wirelessNetItem.m_connectUuid);
KySecuType kySecuType = NONE;
if (type == WpaNone || type == Unknown) {
kySecuType = NONE;
} else if (type == WpaPsk) {
kySecuType = WPA_AND_WPA2_PERSONAL;
} else if (type == SAE) {
kySecuType = WPA3_PERSONAL;
} else if (type == WpaEap) {
kySecuType = WPA_AND_WPA2_ENTERPRISE;
} else {
qDebug() << "KeyMgmt not support now " << type;
}
//有配置或者无密码的wifi直接连接
if (m_wirelessNetItem.m_isConfigured) {
m_wirelessConnectOperation->activeWirelessConnect(m_wlanDevice, m_wirelessNetItem.m_connectUuid);
qDebug()<<"[WlanListItem] Has configuration, will be activated. ssid = "
<< m_wirelessNetItem.m_NetSsid << Q_FUNC_INFO << __LINE__;
m_netButton->startLoading();
return;
if (m_wirelessNetItem.m_kySecuType == kySecuType) {
//安全类型不变直接连接
m_wirelessConnectOperation->activeWirelessConnect(m_wlanDevice, m_wirelessNetItem.m_connectUuid);
qDebug()<<"[WlanListItem] Has configuration, will be activated. ssid = "
<< m_wirelessNetItem.m_NetSsid << Q_FUNC_INFO << __LINE__;
m_netButton->startLoading();
return;
} else {
//安全类型改变则删除连接
m_wirelessConnectOperation->deleteWirelessConnect(m_wirelessNetItem.m_connectUuid);
}
}
if (!this->m_connectButton->isVisible() && m_wirelessNetItem.m_secuType != "") {
@ -620,6 +646,7 @@ void WlanListItem::setConnectButtonState()
QPalette btnPal;
if (m_connectButton->isEnabled()) {
btnPal.setColor(QPalette::Button, ENABLE_BUTTON_COLOR);
btnPal.setColor(QPalette::ButtonText, Qt::white);
m_connectButton->setPalette(btnPal);
} else {
btnPal.setColor(QPalette::Button, UNABLE_BUTTON_COLOR);

View File

@ -59,6 +59,7 @@ public:
public:
QString getSsid();
QString getUuid();
void setSignalStrength(const int &signal);
int getSignalStrength();

View File

@ -306,7 +306,7 @@ void MainWindow::initTrayIcon()
m_showMainwindowAction = new QAction(tr("Show MainWindow"),this);
m_showSettingsAction = new QAction(tr("Settings"),this);
m_trayIcon->setToolTip(QString(tr("kylin-nm")));
m_trayIcon->setToolTip(QString(tr("Network tool")));
m_showSettingsAction->setIcon(QIcon::fromTheme("document-page-setup-symbolic", QIcon(":/res/x/setup.png")) );
// m_trayIconMenu->addAction(m_showMainwindowAction);
m_trayIconMenu->addAction(m_showSettingsAction);
@ -327,6 +327,7 @@ void MainWindow::initDbusConnnect()
connect(m_lanWidget, &LanPage::deviceNameChanged, this, &MainWindow::deviceNameChanged);
connect(m_wlanWidget, &WlanPage::deviceStatusChanged, this, &MainWindow::deviceStatusChanged);
connect(m_wlanWidget, &WlanPage::deviceNameChanged, this, &MainWindow::deviceNameChanged);
connect(m_wlanWidget, &WlanPage::wirelessSwitchBtnChanged, this, &MainWindow::wirelessSwitchBtnChanged);
connect(m_wlanWidget, &WlanPage::activateFailed, this, &MainWindow::activateFailed);
connect(m_wlanWidget, &WlanPage::deactivateFailed, this, &MainWindow::deactivateFailed);
@ -704,6 +705,13 @@ void MainWindow::getWirelessList(QMap<QString, QVector<QStringList> > &map)
}
}
bool MainWindow::getWirelessSwitchBtnState()
{
if (nullptr != m_wlanWidget) {
return m_wlanWidget->getWirelessSwitchBtnState();
}
}
/**
* @brief MainWindow::getWiredList lan列表dbus调用
* @param map

View File

@ -106,11 +106,14 @@ public:
void keyRingInit();
void keyRingClear();
bool getWirelessSwitchBtnState();
Q_SIGNALS:
//设备插拔
void deviceStatusChanged();
//设备名称变化
void deviceNameChanged(QString oldName, QString newName, int type);
void wirelessSwitchBtnChanged(bool state);
//有线无线列表更新(有线增删、无线增加减少)
void lanAdd(QString devName, QStringList info);
void lanRemove(QString dbusPath);

View File

@ -60,14 +60,13 @@ void ConfigPage::initUi()
//网络配置文件类型
m_descriptionLabel->setText(tr("Network profile type"));
m_descriptionLabel->setAlignment(Qt::AlignLeft);
//公用(推荐)无法在网络上发现你的设备。在大多数情况下,在家庭、工作或公共位置连接到网络时使用此功能
m_publicLabel->setText(tr("Public(recommended) Your device can not be discovered on the network. In most cases, "
"use this feature when connected to a network at home, work, or a public location."));
//公用(推荐) 网络中的设备不可发现此电脑。一般情况下适用于公共场所中的网络,如机场或咖啡店等等
m_publicLabel->setText(tr("Public(recommended) Devices on the network cannot discover this computer. Generally, "
"it is suitable for networks in public places, such as airports or coffee shops, etc."));
m_publicLabel->setWordWrap(true);
//专用 可在网络上发现你的设备。如果需要文件共享或使用通过此网络通信的应用,请选择此项。你应该了解并信任网络上的人员和设备。
m_privateLabel->setText(tr("Private Your device can be discovered on the network. Select this if you require file "
"sharing or use applications that communicate over this network. "
"You should know and trust the people and devices on the network."));
//专用 网络中的设备可发现此电脑。一般情况下适用于家庭或工作单位的网络,您认识并信任网络上的个人和设备。
m_privateLabel->setText(tr("Devices on the network can discover this computer. Generally applicable to a network "
"at home or work where you know and trust the individuals and devices on the network."));
m_privateLabel->setWordWrap(true);
//配置防火墙和安全设置
m_congigBtn->setText(tr("Config firewall and security settings"));

View File

@ -141,7 +141,7 @@ void DetailPage::newCopiedTip()
//设置“复制成功”消息弹窗格式
m_copiedTip = new KBallonTip();
m_copiedTip->setTipType(Normal);
m_copiedTip->setContentsMargins(16, 0, 16, 0);
m_copiedTip->setContentsMargins(16, 14, 16, 14);
m_copiedTip->setFixedHeight(48);
m_copiedTip->setWindowFlags(Qt::FramelessWindowHint);
m_copiedTip->setAttribute(Qt::WA_TranslucentBackground, true);

View File

@ -24,8 +24,9 @@
#define ITEM_HEIGHT 36
#define ITEM_MARGINS 18,0,16,0
#define MAX_LABEL_WIDTH 138
#define MIN_LABEL_WIDTH 146
#define MAX_LABEL_WIDTH 154
#define MAX_WIDGET_WIDTH 270
FixLabel::FixLabel(QWidget *parent) :
QLabel(parent)
@ -83,6 +84,7 @@ void DetailWidget::initUI()
m_mainLayout->setContentsMargins(ITEM_MARGINS);
m_keyLabel = new FixLabel(this);
m_keyLabel->setMinimumWidth(MIN_LABEL_WIDTH);
m_keyLabel->setMaximumWidth(MAX_LABEL_WIDTH);
m_keyLabel->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
@ -94,13 +96,10 @@ void DetailWidget::initUI()
m_mainLayout->addWidget(m_copyButton);
}
m_mainLayout->addWidget(m_valueWidget);
m_valueWidget->setMaximumWidth(100000000000);
m_valueWidget->setMaximumWidth(MAX_WIDGET_WIDTH);
}
void DetailWidget::setKey(const QString &keyLabel)
{
m_keyLabel->setText(keyLabel);
m_keyLabel->setLabelText(keyLabel);
}

View File

@ -25,6 +25,8 @@
#define LAYOUT_SPACING 0
#define HINT_TEXT_MARGINS 8, 1, 0, 3
#define LABEL_HEIGHT 24
#define FRAME_SPEED 150
#define ICON_SIZE 16,16
Ipv4Page::Ipv4Page(QWidget *parent):QFrame(parent)
{
@ -53,6 +55,7 @@ void Ipv4Page::initUI() {
m_addressHintLabel = new QLabel(this);
m_addressHintLabel->setFixedHeight(LABEL_HEIGHT);
m_addressHintLabel->setContentsMargins(HINT_TEXT_MARGINS);
initConflictHintLable();
m_maskHintLabel = new QLabel(this);
m_maskHintLabel->setFixedHeight(LABEL_HEIGHT);
@ -72,6 +75,12 @@ void Ipv4Page::initUI() {
m_dnsLabel->setText(tr("Prefs DNS"));
m_secDnsLabel->setText(tr("Alternative DNS"));
m_statusLabel = new QLabel(this);
m_statusLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
QHBoxLayout *pPwdLayout = new QHBoxLayout(ipv4addressEdit);
pPwdLayout->addStretch();
pPwdLayout->addWidget(m_statusLabel);
QPalette hintTextColor;
hintTextColor.setColor(QPalette::WindowText, Qt::red);
m_addressHintLabel->setPalette(hintTextColor);
@ -123,6 +132,8 @@ void Ipv4Page::initUI() {
netMaskEdit->setValidator(new QRegExpValidator(rx, this));
firstDnsEdit->setValidator(new QRegExpValidator(rx, this));
secondDnsEdit->setValidator(new QRegExpValidator(rx, this));
initLoadingIcon();
}
void Ipv4Page::initComponent() {
@ -134,6 +145,7 @@ void Ipv4Page::initComponent() {
connect(ipv4ConfigCombox, SIGNAL(currentIndexChanged(int)), this, SLOT(configChanged(int)));
connect(ipv4addressEdit, SIGNAL(textChanged(QString)), this, SLOT(onAddressTextChanged()));
connect(ipv4addressEdit, SIGNAL(editingFinished()), this, SLOT(onAddressEidtFinished()));
connect(netMaskEdit, SIGNAL(textChanged(QString)), this, SLOT(onNetMaskTextChanged()));
connect(ipv4ConfigCombox, SIGNAL(currentIndexChanged(int)), this, SLOT(setEnableOfSaveBtn()));
@ -279,6 +291,9 @@ void Ipv4Page::configChanged(int index) {
void Ipv4Page::onAddressTextChanged()
{
m_iconLabel->hide();
m_textLabel->hide();
if (!getTextEditState(ipv4addressEdit->text())) {
m_addressHintLabel->setText(tr("Invalid address"));
} else {
@ -295,6 +310,15 @@ void Ipv4Page::onNetMaskTextChanged()
}
}
void Ipv4Page::onAddressEidtFinished()
{
if (ipv4addressEdit->isModified()) {
if (!ipv4addressEdit->text().isEmpty() && getTextEditState(ipv4addressEdit->text())) {
Q_EMIT ipv4EditFinished(ipv4addressEdit->text());
}
}
}
void Ipv4Page::setLineEnabled(bool check) {
if (!check) {
@ -372,3 +396,65 @@ QString Ipv4Page::getNetMaskText(QString text)
}
return QString("%1.%2.%3.%4").arg(list[0],list[1],list[2],list[3]);
}
void Ipv4Page::initConflictHintLable()
{
QIcon icon = QIcon::fromTheme("dialog-warning");
m_iconLabel = new QLabel(m_addressHintLabel);
m_iconLabel->setPixmap(icon.pixmap(ICON_SIZE));
m_textLabel = new QLabel(m_addressHintLabel);
m_textLabel->setText(tr("Address conflict"));
QHBoxLayout *conflictHintLayout = new QHBoxLayout(m_addressHintLabel);
conflictHintLayout->setContentsMargins(0, 0, 0, 0);
conflictHintLayout->addWidget(m_iconLabel);
conflictHintLayout->addWidget(m_textLabel);
conflictHintLayout->addStretch();
m_addressHintLabel->setLayout(conflictHintLayout);
m_iconLabel->hide();
m_textLabel->hide();
}
void Ipv4Page::initLoadingIcon()
{
m_loadIcons.append(QIcon::fromTheme("ukui-loading-1-symbolic"));
m_loadIcons.append(QIcon::fromTheme("ukui-loading-2-symbolic"));
m_loadIcons.append(QIcon::fromTheme("ukui-loading-3-symbolic"));
m_loadIcons.append(QIcon::fromTheme("ukui-loading-4-symbolic"));
m_loadIcons.append(QIcon::fromTheme("ukui-loading-5-symbolic"));
m_loadIcons.append(QIcon::fromTheme("ukui-loading-6-symbolic"));
m_loadIcons.append(QIcon::fromTheme("ukui-loading-7-symbolic"));
m_iconTimer = new QTimer(this);
connect(m_iconTimer, &QTimer::timeout, this, &Ipv4Page::updateIcon);
}
void Ipv4Page::updateIcon()
{
if (m_currentIconIndex > 6) {
m_currentIconIndex = 0;
}
m_statusLabel->setPixmap(m_loadIcons.at(m_currentIconIndex).pixmap(ICON_SIZE));
m_currentIconIndex ++;
}
void Ipv4Page::startLoading()
{
m_iconTimer->start(FRAME_SPEED);
}
void Ipv4Page::stopLoading()
{
m_iconTimer->stop();
m_statusLabel->clear();
}
void Ipv4Page::showIpv4AddressConflict(bool isConflict)
{
if (isConflict) {
m_iconLabel->show();
m_textLabel->show();
} else {
m_iconLabel->hide();
m_textLabel->hide();
}
}

View File

@ -48,6 +48,10 @@ public:
bool checkIsChanged(const ConInfo info, KyConnectSetting &setting);
void startLoading();
void stopLoading();
void showIpv4AddressConflict(bool isConflict);
private:
QComboBox *ipv4ConfigCombox;
LineEdit *ipv4addressEdit;
@ -56,7 +60,6 @@ private:
LineEdit *firstDnsEdit;
LineEdit *secondDnsEdit;
private:
QFormLayout *m_detailLayout;
QVBoxLayout *mvBoxLayout;
QLabel *m_configLabel;
@ -71,6 +74,15 @@ private:
QLabel *m_maskHintLabel;
QLabel *m_gateWayEmptyLabel;
QLabel *m_firstDnsEmptyLabel;
QLabel *m_statusLabel = nullptr;
QList<QIcon> m_loadIcons;
QTimer *m_iconTimer = nullptr;
int m_currentIconIndex =0;
QLabel *m_iconLabel;
QLabel *m_textLabel;
private:
void initUI();
void initComponent();
@ -80,17 +92,20 @@ private:
bool netMaskIsValide(QString text);
QString getNetMaskText(QString text);
bool checkConnectBtnIsEnabled();
void initConflictHintLable();
void initLoadingIcon();
private Q_SLOTS:
void setEnableOfSaveBtn();
void configChanged(int index);
void onAddressTextChanged();
void onNetMaskTextChanged();
void onAddressEidtFinished();
void updateIcon();
Q_SIGNALS:
void setIpv4PageState(bool);
void ipv4EditFinished(const QString &address);
};
#endif // IPV4PAGE_H

View File

@ -24,6 +24,8 @@
#define LAYOUT_SPACING 0
#define HINT_TEXT_MARGINS 8, 1, 0, 3
#define LABEL_HEIGHT 24
#define FRAME_SPEED 150
#define ICON_SIZE 16,16
Ipv6Page::Ipv6Page(QWidget *parent):QFrame(parent)
{
@ -134,6 +136,7 @@ void Ipv6Page::initUI() {
m_addressHintLabel = new QLabel(this);
m_addressHintLabel->setFixedHeight(LABEL_HEIGHT);
m_addressHintLabel->setContentsMargins(HINT_TEXT_MARGINS);
initConflictHintLable();
m_gateWayHintLabel = new QLabel(this);
m_gateWayHintLabel->setFixedHeight(LABEL_HEIGHT);
@ -153,6 +156,12 @@ void Ipv6Page::initUI() {
m_dnsLabel->setText(tr("Prefs DNS"));
m_secDnsLabel->setText(tr("Alternative DNS"));
m_statusLabel = new QLabel(this);
m_statusLabel->setAlignment(Qt::AlignRight | Qt::AlignVCenter);
QHBoxLayout *pPwdLayout = new QHBoxLayout(ipv6AddressEdit);
pPwdLayout->addStretch();
pPwdLayout->addWidget(m_statusLabel);
QPalette hintTextColor;
hintTextColor.setColor(QPalette::WindowText, Qt::red);
m_addressHintLabel->setPalette(hintTextColor);
@ -196,6 +205,8 @@ void Ipv6Page::initUI() {
QRegExp prefix_rx("\\b(?:(?:12[0-8]|1[0-1][0-9]|^[1-9][0-9]?$)\\.){3}(?:12[0-8]|1[0-1][0-9]|^[1-9][0-9]?$)\\b");
lengthEdit->setValidator(new QRegExpValidator(prefix_rx,this));
initLoadingIcon();
}
void Ipv6Page::initComponent() {
@ -207,6 +218,7 @@ void Ipv6Page::initComponent() {
connect(ipv6ConfigCombox, SIGNAL(currentIndexChanged(int)), this, SLOT(configChanged(int)));
connect(ipv6AddressEdit, SIGNAL(textChanged(QString)), this, SLOT(onAddressTextChanged()));
connect(ipv6AddressEdit, SIGNAL(editingFinished()), this, SLOT(onAddressEidtFinished()));
connect(gateWayEdit, SIGNAL(textChanged(QString)), this, SLOT(onGatewayTextChanged()));
connect(ipv6ConfigCombox, SIGNAL(currentIndexChanged(int)), this, SLOT(setEnableOfSaveBtn()));
@ -258,6 +270,9 @@ void Ipv6Page::setEnableOfSaveBtn()
void Ipv6Page::onAddressTextChanged()
{
m_iconLabel->hide();
m_textLabel->hide();
if (!getIpv6EditState(ipv6AddressEdit->text())) {
m_addressHintLabel->setText(tr("Invalid address"));
} else {
@ -274,6 +289,15 @@ void Ipv6Page::onGatewayTextChanged()
}
}
void Ipv6Page::onAddressEidtFinished()
{
if (ipv6AddressEdit->isModified()) {
if (!ipv6AddressEdit->text().isEmpty() && getIpv6EditState(ipv6AddressEdit->text())) {
Q_EMIT ipv6EditFinished(ipv6AddressEdit->text());
}
}
}
bool Ipv6Page::checkConnectBtnIsEnabled()
{
if (ipv6ConfigCombox->currentIndex() == AUTO_CONFIG) {
@ -312,6 +336,23 @@ bool Ipv6Page::checkConnectBtnIsEnabled()
return true;
}
void Ipv6Page::initConflictHintLable()
{
QIcon icon = QIcon::fromTheme("dialog-warning");
m_iconLabel = new QLabel(m_addressHintLabel);
m_iconLabel->setPixmap(icon.pixmap(ICON_SIZE));
m_textLabel = new QLabel(m_addressHintLabel);
m_textLabel->setText(tr("Address conflict"));
QHBoxLayout *conflictHintLayout = new QHBoxLayout(m_addressHintLabel);
conflictHintLayout->setContentsMargins(0, 0, 0, 0);
conflictHintLayout->addWidget(m_iconLabel);
conflictHintLayout->addWidget(m_textLabel);
conflictHintLayout->addStretch();
m_addressHintLabel->setLayout(conflictHintLayout);
m_iconLabel->hide();
m_textLabel->hide();
}
bool Ipv6Page::getIpv6EditState(QString text)
{
if (text.isEmpty()) {
@ -348,3 +389,47 @@ int Ipv6Page::getPerfixLength(QString text)
return length;
}
void Ipv6Page::initLoadingIcon()
{
m_loadIcons.append(QIcon::fromTheme("ukui-loading-1-symbolic"));
m_loadIcons.append(QIcon::fromTheme("ukui-loading-2-symbolic"));
m_loadIcons.append(QIcon::fromTheme("ukui-loading-3-symbolic"));
m_loadIcons.append(QIcon::fromTheme("ukui-loading-4-symbolic"));
m_loadIcons.append(QIcon::fromTheme("ukui-loading-5-symbolic"));
m_loadIcons.append(QIcon::fromTheme("ukui-loading-6-symbolic"));
m_loadIcons.append(QIcon::fromTheme("ukui-loading-7-symbolic"));
m_iconTimer = new QTimer(this);
connect(m_iconTimer, &QTimer::timeout, this, &Ipv6Page::updateIcon);
}
void Ipv6Page::updateIcon()
{
if (m_currentIconIndex > 6) {
m_currentIconIndex = 0;
}
m_statusLabel->setPixmap(m_loadIcons.at(m_currentIconIndex).pixmap(ICON_SIZE));
m_currentIconIndex ++;
}
void Ipv6Page::startLoading()
{
m_iconTimer->start(FRAME_SPEED);
}
void Ipv6Page::stopLoading()
{
m_iconTimer->stop();
m_statusLabel->clear();
}
void Ipv6Page::showIpv6AddressConflict(bool isConflict)
{
if (isConflict) {
m_iconLabel->show();
m_textLabel->show();
} else {
m_iconLabel->hide();
m_textLabel->hide();
}
}

View File

@ -50,6 +50,10 @@ public:
int getPerfixLength(QString text);
void startLoading();
void stopLoading();
void showIpv6AddressConflict(bool isConflict);
public:
QComboBox *ipv6ConfigCombox;
LineEdit *ipv6AddressEdit;
@ -71,6 +75,14 @@ private:
QLabel *m_subnetEmptyLabel;
QLabel *m_gateWayHintLabel;
QLabel *m_firstDnsEmptyLabel;
QLabel *m_statusLabel = nullptr;
QList<QIcon> m_loadIcons;
QTimer *m_iconTimer = nullptr;
int m_currentIconIndex =0;
QLabel *m_iconLabel;
QLabel *m_textLabel;
private:
void initUI();
void initComponent();
@ -80,14 +92,20 @@ private:
bool checkConnectBtnIsEnabled();
void initConflictHintLable();
void initLoadingIcon();
private Q_SLOTS:
void configChanged(int index);
void setEnableOfSaveBtn();
void onAddressTextChanged();
void onGatewayTextChanged();
void onAddressEidtFinished();
void updateIcon();
Q_SIGNALS:
void setIpv6PageState(bool);
void ipv6EditFinished(const QString &address);
};
#endif // IPV6PAGE_H

View File

@ -33,6 +33,7 @@
#define PSK_SCRO_HEIGHT 182
#define PEAP_SCRO_HEIGHT 340
#define TLS_SCRO_HEIGHT 560
#define MEDIUM_WEIGHT_VALUE 57
JoinHiddenWiFiPage::JoinHiddenWiFiPage(QString devName, KDialog *parent)
:m_devName(devName),
@ -69,27 +70,27 @@ void JoinHiddenWiFiPage::initUI()
m_secuWidget->setSecurity(KySecuType::WPA_AND_WPA2_PERSONAL);
m_descriptionLabel = new QLabel(this);
m_nameLabel = new QLabel(this);
m_nameLabel = new FixLabel(this);
m_nameLabel->setFixedWidth(LABEL_MIN_WIDTH);
m_nameEdit =new LineEdit(this);
m_emptyLabel = new QLabel(this);
m_checkLabel = new QLabel(this);
m_rememberCheckBox = new QCheckBox(this);
m_bottomDivider = new Divider(this);
m_showListBtn = new KBorderlessButton(this);
m_cancelBtn =new QPushButton(this);
m_joinBtn =new QPushButton(this);
m_scrollArea = new QScrollArea(this);
m_scrollArea->setFrameShape(QFrame::NoFrame);
m_scrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
m_hiddenWifiScrollArea = new QScrollArea(this);
m_hiddenWifiScrollArea->setFrameShape(QFrame::NoFrame);
m_hiddenWifiScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
QPalette pa = m_hiddenWifiScrollArea->palette();
pa.setBrush(QPalette::Window, Qt::transparent);
m_hiddenWifiScrollArea->setPalette(pa);
m_pageLayout = new QVBoxLayout(this);
m_pageLayout->setContentsMargins(LAYOUT_MARGINS);
m_pageLayout->setSpacing(0);
m_pageLayout->addWidget(m_topWidget);
m_pageLayout->addWidget(m_scrollArea);
m_pageLayout->addWidget(m_hiddenWifiScrollArea);
m_pageLayout->addWidget(m_bottomDivider);
m_pageLayout->addWidget(m_bottomWidget);
this->mainWidget()->setLayout(m_pageLayout);
@ -108,26 +109,14 @@ void JoinHiddenWiFiPage::initUI()
ssidLayout->addWidget(m_nameLabel);
ssidLayout->addWidget(m_nameEdit);
//记住该网络复选框
QWidget *checkWidget = new QWidget(this);
QHBoxLayout *checkLayout = new QHBoxLayout(checkWidget);
checkLayout->setContentsMargins(LAYOUT_MARGINS);
m_emptyLabel->setMinimumWidth(LABEL_MIN_WIDTH - 8);
m_rememberCheckBox->setChecked(true);
checkLayout->addWidget(m_emptyLabel);
checkLayout->addWidget(m_rememberCheckBox);
checkLayout->addWidget(m_checkLabel);
checkLayout->addStretch();
m_centerVBoxLayout = new QVBoxLayout(m_centerWidget);
m_centerVBoxLayout->setContentsMargins(CENTER_LAYOUT_MARGINS);
m_centerVBoxLayout->setSpacing(0);
m_centerVBoxLayout->addWidget(ssidWidget);
m_centerVBoxLayout->addSpacing(LAYOUT_SPACING);
m_centerVBoxLayout->addWidget(m_secuWidget);
m_centerVBoxLayout->addWidget(checkWidget);
m_centerVBoxLayout->addStretch();
m_scrollArea->setWidget(m_centerWidget);
m_hiddenWifiScrollArea->setWidget(m_centerWidget);
//底部按钮
m_bottomLayout = new QHBoxLayout(m_bottomWidget);
@ -141,10 +130,10 @@ void JoinHiddenWiFiPage::initUI()
//请输入您想要加入网络的名称和安全类型
m_descriptionLabel->setText(tr("Please enter the network name and security type"));
QFont font = m_descriptionLabel->font();
font.setWeight(75);
font.setWeight(MEDIUM_WEIGHT_VALUE);
m_descriptionLabel->setFont(font);
m_nameLabel->setText(tr("Network name(SSID)")); //网络名(SSID)
m_checkLabel->setText(tr("Remember the Network")); //记住该网络
m_nameLabel->setLabelText(tr("Network name(SSID)")); //网络名(SSID)
m_showListBtn->setText(tr("Show Network List")); //显示网络列表
m_cancelBtn->setText(tr("Cancel"));
m_joinBtn->setText(tr("Join"));
@ -152,9 +141,6 @@ void JoinHiddenWiFiPage::initUI()
m_nameEdit->setMaxLength(MAX_NAME_LENGTH);
m_nameEdit->setPlaceholderText(tr("Required")); //必填
QPalette pa = m_scrollArea->palette();
pa.setBrush(QPalette::Window, Qt::transparent);
m_scrollArea->setPalette(pa);
this->setWindowTitle(tr("Find and Join Wi-Fi"));
this->setWindowIcon(QIcon::fromTheme("kylin-network"));
@ -196,7 +182,6 @@ void JoinHiddenWiFiPage::onBtnJoinClicked()
connSettingInfo.m_ssid = m_nameEdit->text();
connSettingInfo.setConnectName(connSettingInfo.m_ssid);
connSettingInfo.setIfaceName(m_devName);
connSettingInfo.m_isAutoConnect = m_rememberCheckBox->isChecked();
connSettingInfo.m_secretFlag = 0;
KySecuType secuType;

View File

@ -62,19 +62,15 @@ private:
SecurityPage *m_secuWidget;
QLabel *m_descriptionLabel;
QLabel *m_nameLabel;
FixLabel *m_nameLabel;
LineEdit *m_nameEdit;
QLabel *m_emptyLabel;
QLabel *m_checkLabel;
QCheckBox *m_rememberCheckBox = nullptr;
Divider *m_bottomDivider = nullptr;
KBorderlessButton *m_showListBtn;
QPushButton *m_cancelBtn;
QPushButton *m_joinBtn;
QScrollArea *m_scrollArea;
QScrollArea *m_hiddenWifiScrollArea;
QVBoxLayout *m_pageLayout;
QHBoxLayout *m_topLayout;
QVBoxLayout *m_centerVBoxLayout;

View File

@ -37,7 +37,8 @@
#define WINDOW_HEIGHT 602
#define ICON_SIZE 22,22
#define TITLE_LAYOUT_MARGINS 9,9,0,0
#define LAYOUT_MARGINS 0,0,0,0
#define CENTER_LAYOUT_MARGINS 24,0,0,0
#define BOTTOM_LAYOUT_MARGINS 24,0,24,0
#define BOTTOM_LAYOUT_SPACING 16
#define PAGE_LAYOUT_SPACING 1
#define DETAIL_PAGE_NUM 0
@ -49,6 +50,9 @@
#define PAGE_MIN_HEIGHT 40
#define LAN_TAB_WIDTH 180
#define WLAN_TAB_WIDTH 240
#define SCRO_WIDTH 472
#define PEAP_SCRO_HEIGHT 300
#define TLS_SCRO_HEIGHT 480
//extern void qt_blurImage(QImage &blurImage, qreal radius, bool quality, int transposed);
@ -89,6 +93,37 @@ void NetDetail::setNetdetailSomeEnable(bool on)
confimBtn->setEnabled(on);
}
void NetDetail::startObjectThread()
{
m_objectThread = new QThread();
m_object = new ThreadObject(m_deviceName);
m_object->moveToThread(m_objectThread);
connect(m_objectThread, &QThread::finished, m_objectThread, &QObject::deleteLater);
connect(m_objectThread, &QThread::finished, m_object, &QObject::deleteLater);
connect(ipv4Page, &Ipv4Page::ipv4EditFinished, this, [=](){
ipv4Page->startLoading();
});
connect(ipv6Page, &Ipv6Page::ipv6EditFinished, this, [=](){
ipv6Page->startLoading();
});
connect(ipv4Page, SIGNAL(ipv4EditFinished(const QString &)), m_object, SLOT(checkIpv4ConflictThread(const QString &)));
connect(ipv6Page, SIGNAL(ipv6EditFinished(const QString &)), m_object, SLOT(checkIpv6ConflictThread(const QString &)));
connect(this, SIGNAL(checkCurrentIpv4Conflict(const QString &)), m_object, SLOT(checkIpv4ConflictThread(const QString &)));
connect(this, SIGNAL(checkCurrentIpv6Conflict(const QString &)), m_object, SLOT(checkIpv6ConflictThread(const QString &)));
connect(m_object, &ThreadObject::ipv4IsConflict, this, [=](bool ipv4IsConf) {
ipv4Page->stopLoading();
ipv4Page->showIpv4AddressConflict(ipv4IsConf);
});
connect(m_object, &ThreadObject::ipv6IsConflict, this, [=](bool ipv6IsConf) {
ipv6Page->stopLoading();
ipv6Page->showIpv6AddressConflict(ipv6IsConf);
});
m_objectThread->start();
}
NetDetail::NetDetail(QString interface, QString name, QString uuid, bool isActive, bool isWlan, bool isCreateNet, QWidget *parent)
:m_deviceName(interface),
m_name(name),
@ -130,8 +165,9 @@ NetDetail::NetDetail(QString interface, QString name, QString uuid, bool isActiv
loadPage();
initComponent();
getConInfo(m_info);
startObjectThread();
pagePadding(name,isWlan);
setSecuPageHeight();
connect(qApp, &QApplication::paletteChanged, this, &NetDetail::onPaletteChanged);
isCreateOk = !(m_isCreateNet && !isWlan);
@ -150,7 +186,10 @@ NetDetail::NetDetail(QString interface, QString name, QString uuid, bool isActiv
NetDetail::~NetDetail()
{
if (m_objectThread->isRunning()) {
m_objectThread->quit();
m_objectThread->wait();
}
}
void NetDetail::onPaletteChanged()
@ -244,7 +283,8 @@ void NetDetail::centerToScreen()
void NetDetail::initUI()
{
QVBoxLayout *mainLayout = new QVBoxLayout(this);
mainLayout->setContentsMargins(24,9,24,24);
mainLayout->setContentsMargins(0,9,0,24);
mainLayout->setSpacing(24);
detailPage = new DetailPage(isWlan, m_name.isEmpty(), this);
@ -259,11 +299,25 @@ void NetDetail::initUI()
centerWidget = new QWidget(this);
bottomWidget = new QWidget(this);
m_secuPageScrollArea = new QScrollArea(this);
m_secuPageScrollArea->setFrameShape(QFrame::NoFrame);
m_secuPageScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
m_secuPageScrollArea->setWidget(securityPage);
QPalette pal = m_secuPageScrollArea->palette();
pal.setBrush(QPalette::Window, Qt::transparent);
m_secuPageScrollArea->setPalette(pal);
detailPage->setFixedWidth(SCRO_WIDTH);
ipv4Page->setFixedWidth(SCRO_WIDTH);
ipv6Page->setFixedWidth(SCRO_WIDTH);
createNetPage->setFixedWidth(SCRO_WIDTH);
configPage->setFixedWidth(SCRO_WIDTH);
stackWidget = new QStackedWidget(centerWidget);
stackWidget->addWidget(detailPage);
stackWidget->addWidget(ipv4Page);
stackWidget->addWidget(ipv6Page);
stackWidget->addWidget(securityPage);
stackWidget->addWidget(m_secuPageScrollArea);
stackWidget->addWidget(configPage);
stackWidget->addWidget(createNetPage);
@ -320,13 +374,13 @@ void NetDetail::initUI()
this->setWindowIcon(QIcon::fromTheme("kylin-network"));
QVBoxLayout *centerlayout = new QVBoxLayout(centerWidget);
centerlayout->setContentsMargins(LAYOUT_MARGINS);
centerlayout->setContentsMargins(CENTER_LAYOUT_MARGINS);
centerlayout->addWidget(pageFrame);
centerlayout->addSpacing(4);
centerlayout->addWidget(stackWidget);
QHBoxLayout *bottomLayout = new QHBoxLayout(bottomWidget);
bottomLayout->setContentsMargins(LAYOUT_MARGINS);
bottomLayout->setContentsMargins(BOTTOM_LAYOUT_MARGINS);
bottomLayout->setSpacing(BOTTOM_LAYOUT_SPACING);
bottomLayout->addWidget(forgetBtn);
bottomLayout->addStretch();
@ -394,6 +448,13 @@ void NetDetail::initComponent()
isSecuOk = status;
setConfirmEnable();
});
connect(securityPage, &SecurityPage::secuTypeChanged, this, [=]() {
setSecuPageHeight();
});
connect(securityPage, &SecurityPage::eapTypeChanged, this, [=]() {
setSecuPageHeight();
});
}
void NetDetail::pagePadding(QString netName, bool isWlan)
@ -417,6 +478,7 @@ void NetDetail::pagePadding(QString netName, bool isWlan)
//ipv4页面填充
if (m_info.ipv4ConfigType == CONFIG_IP_MANUAL) {
Q_EMIT checkCurrentIpv4Conflict(m_info.strIPV4Address);
ipv4Page->setIpv4Config(m_info.ipv4ConfigType);
ipv4Page->setIpv4(m_info.strIPV4Address);
ipv4Page->setNetMask(m_info.strIPV4NetMask);
@ -428,6 +490,7 @@ void NetDetail::pagePadding(QString netName, bool isWlan)
}
//ipv6页面填充
if (m_info.ipv6ConfigType == CONFIG_IP_MANUAL) {
Q_EMIT checkCurrentIpv6Conflict(m_info.strIPV6Address);
ipv6Page->setIpv6Config(m_info.ipv6ConfigType);
ipv6Page->setIpv6(m_info.strIPV6Address);
ipv6Page->setIpv6Perfix(m_info.iIPV6Prefix);
@ -455,12 +518,7 @@ void NetDetail::pagePadding(QString netName, bool isWlan)
//配置页面
if (isActive) {
int configType = NetworkModeConfig::getInstance()->getNetworkModeConfig(m_uuid);
if (configType == -1) {
configPage->setConfigState(KSC_FIREWALL_PUBLIC);
} else {
configPage->setConfigState(configType);
}
configPage->setConfigState(NetworkModeConfig::getInstance()->getNetworkModeConfig(m_uuid));
}
}
@ -660,6 +718,22 @@ void NetDetail::initSecuData()
}
}
void NetDetail::setSecuPageHeight()
{
KySecuType secuType;
KyEapMethodType eapType;
securityPage->getSecuType(secuType, eapType);
if (secuType == WPA_AND_WPA2_ENTERPRISE) {
if (eapType == TLS) {
securityPage->setFixedSize(SCRO_WIDTH, TLS_SCRO_HEIGHT);
} else {
securityPage->setFixedSize(SCRO_WIDTH, PEAP_SCRO_HEIGHT);
}
} else {
securityPage->setFixedSize(SCRO_WIDTH, PEAP_SCRO_HEIGHT);
}
}
void NetDetail::initTlsInfo(ConInfo &conInfo)
{
m_resource->getEnterPriseInfoTls(m_uuid, conInfo.tlsInfo);
@ -734,6 +808,7 @@ void NetDetail::setConfirmEnable()
confimBtn->setEnabled(isConfirmBtnEnable);
}
#if 0
bool NetDetail::checkIpv4Conflict(QString ipv4Address)
{
showDesktopNotify(tr("start check ipv4 address conflict"), "networkwrong");
@ -767,6 +842,7 @@ bool NetDetail::checkIpv6Conflict(QString ipv6address)
ipv46rping = nullptr;
return isConflict;
}
#endif
void NetDetail::updateWirelessPersonalConnect()
{
@ -796,13 +872,13 @@ bool NetDetail::createWiredConnect()
KyWirelessConnectSetting connetSetting;
connetSetting.setIfaceName(m_deviceName);
createNetPage->constructIpv4Info(connetSetting);
if (connetSetting.m_ipv4ConfigIpType != CONFIG_IP_DHCP) {
if (checkIpv4Conflict(connetSetting.m_ipv4Address.at(0).ip().toString())) {
qDebug() << "ipv4 conflict";
showDesktopNotify(tr("ipv4 address conflict!"), "networkwrong");
return false;
}
}
// if (connetSetting.m_ipv4ConfigIpType != CONFIG_IP_DHCP) {
// if (checkIpv4Conflict(connetSetting.m_ipv4Address.at(0).ip().toString())) {
// qDebug() << "ipv4 conflict";
// showDesktopNotify(tr("ipv4 address conflict!"), "networkwrong");
// return false;
// }
// }
m_wiredConnOperation->createWiredConnect(connetSetting);
return true;
}
@ -847,21 +923,21 @@ bool NetDetail::createWirelessConnect()
connetSetting.dumpInfo();
qDebug() << "ipv4Changed" << ipv4Change << "ipv6Change" << ipv6Change;
if (ipv4Change && connetSetting.m_ipv4ConfigIpType == CONFIG_IP_MANUAL) {
if (checkIpv4Conflict(connetSetting.m_ipv4Address.at(0).ip().toString())) {
qDebug() << "ipv4 conflict";
showDesktopNotify(tr("ipv4 address conflict!"), "networkwrong");
return false;
}
}
// if (ipv4Change && connetSetting.m_ipv4ConfigIpType == CONFIG_IP_MANUAL) {
// if (checkIpv4Conflict(connetSetting.m_ipv4Address.at(0).ip().toString())) {
// qDebug() << "ipv4 conflict";
// showDesktopNotify(tr("ipv4 address conflict!"), "networkwrong");
// return false;
// }
// }
if (ipv6Change && connetSetting.m_ipv6ConfigIpType == CONFIG_IP_MANUAL) {
if (checkIpv6Conflict(connetSetting.m_ipv6Address.at(0).ip().toString())) {
qDebug() << "ipv6 conflict";
showDesktopNotify(tr("ipv6 address conflict!"), "networkwrong");
return false;
}
}
// if (ipv6Change && connetSetting.m_ipv6ConfigIpType == CONFIG_IP_MANUAL) {
// if (checkIpv6Conflict(connetSetting.m_ipv6Address.at(0).ip().toString())) {
// qDebug() << "ipv6 conflict";
// showDesktopNotify(tr("ipv6 address conflict!"), "networkwrong");
// return false;
// }
// }
//wifi安全性
if (secuType == WPA_AND_WPA2_ENTERPRISE) {
connetSetting.m_type = WpaEap;
@ -935,21 +1011,21 @@ bool NetDetail::updateConnect()
qDebug() << "ipv4Changed" << ipv4Change << "ipv6Change" << ipv6Change;
if (ipv4Change && connetSetting.m_ipv4ConfigIpType == CONFIG_IP_MANUAL) {
if (checkIpv4Conflict(connetSetting.m_ipv4Address.at(0).ip().toString())) {
qDebug() << "ipv4 conflict";
showDesktopNotify(tr("ipv4 address conflict!"), "networkwrong");
return false;
}
}
// if (ipv4Change && connetSetting.m_ipv4ConfigIpType == CONFIG_IP_MANUAL) {
// if (checkIpv4Conflict(connetSetting.m_ipv4Address.at(0).ip().toString())) {
// qDebug() << "ipv4 conflict";
// showDesktopNotify(tr("ipv4 address conflict!"), "networkwrong");
// return false;
// }
// }
if (ipv6Change && connetSetting.m_ipv6ConfigIpType == CONFIG_IP_MANUAL) {
if (checkIpv6Conflict(connetSetting.m_ipv6Address.at(0).ip().toString())) {
qDebug() << "ipv6 conflict";
showDesktopNotify(tr("ipv6 address conflict!"), "networkwrong");
return false;
}
}
// if (ipv6Change && connetSetting.m_ipv6ConfigIpType == CONFIG_IP_MANUAL) {
// if (checkIpv6Conflict(connetSetting.m_ipv6Address.at(0).ip().toString())) {
// qDebug() << "ipv6 conflict";
// showDesktopNotify(tr("ipv6 address conflict!"), "networkwrong");
// return false;
// }
// }
if (ipv4Change || ipv6Change) {
connetSetting.dumpInfo();
@ -1053,3 +1129,57 @@ QSize NetTabBar::minimumTabSizeHint(int index) const
Q_UNUSED(index)
return QSize(TAB_WIDTH, TAB_HEIGHT);
}
ThreadObject::ThreadObject(QString deviceName, QObject *parent)
:m_devName(deviceName), QObject(parent)
{
m_isStop = false;
}
ThreadObject::~ThreadObject()
{
}
void ThreadObject::stop()
{
m_isStop = true;
}
void ThreadObject::checkIpv4ConflictThread(const QString &ipv4Address)
{
if (m_isStop) {
return;
}
bool isConflict = false;
KyIpv4Arping* ipv4Arping = new KyIpv4Arping(m_devName, ipv4Address);
if (ipv4Arping->ipv4ConflictCheck() >= 0) {
isConflict = ipv4Arping->ipv4IsConflict();
} else {
qWarning() << "checkIpv4Conflict internal error";
}
delete ipv4Arping;
ipv4Arping = nullptr;
Q_EMIT ipv4IsConflict(isConflict);
}
void ThreadObject::checkIpv6ConflictThread(const QString &ipv6Address)
{
if (m_isStop) {
return;
}
bool isConflict = false;
KyIpv6Arping* ipv6rping = new KyIpv6Arping(m_devName, ipv6Address);
if (ipv6rping->ipv6ConflictCheck() >= 0) {
isConflict = ipv6rping->ipv6IsConflict();
} else {
qWarning() << "checkIpv6Conflict internal error";
}
delete ipv6rping;
ipv6rping = nullptr;
Q_EMIT ipv6IsConflict(isConflict);
}

View File

@ -32,6 +32,7 @@
#include <QApplication>
#include <QDebug>
#include <QSettings>
#include <QThread>
#include <QDBusMessage>
#include <QDBusObjectPath>
@ -65,6 +66,25 @@ public:
QSize sizeHint() const;
QSize minimumTabSizeHint(int index) const;
};
class ThreadObject : public QObject
{
Q_OBJECT
public:
ThreadObject(QString deviceName, QObject *parent = nullptr);
~ThreadObject();
void stop();
private:
QString m_devName;
volatile bool m_isStop;
public Q_SLOTS:
void checkIpv4ConflictThread(const QString &ipv4Address);
void checkIpv6ConflictThread(const QString &ipv6Address);
Q_SIGNALS:
bool ipv4IsConflict(bool isConflict);
bool ipv6IsConflict(bool isConflict);
};
class NetDetail : public QWidget
{
@ -86,6 +106,7 @@ private:
void loadPage();
void pagePadding(QString netName, bool isWlan);
void initSecuData();
void setSecuPageHeight();
void initTlsInfo(ConInfo &conInfo);
void initPeapInfo(ConInfo &conInfo);
@ -103,8 +124,8 @@ private:
void setConfirmEnable();
bool checkIpv4Conflict(QString ipv4Address);
bool checkIpv6Conflict(QString ipv6Address);
// bool checkIpv4Conflict(QString ipv4Address);
// bool checkIpv6Conflict(QString ipv6Address);
bool createWiredConnect();
bool createWirelessConnect();
@ -115,6 +136,8 @@ private:
void showDesktopNotify(const QString &message, QString soundName);
void setNetdetailSomeEnable(bool on);
void startObjectThread();
private:
KyNetworkDeviceResourse *m_netDeviceResource = nullptr;
KyConnectOperation* m_connectOperation = nullptr;
@ -133,6 +156,7 @@ private:
QWidget * centerWidget;
QWidget * bottomWidget;
QScrollArea * m_secuPageScrollArea;
QPushButton * cancelBtn;
QPushButton * forgetBtn;
@ -159,6 +183,9 @@ private:
ConInfo m_info;
ThreadObject *m_object;
QThread *m_objectThread;
private Q_SLOTS:
void on_btnConfirm_clicked();
void on_btnForget_clicked();
@ -171,8 +198,8 @@ Q_SIGNALS:
void detailPageClose(bool on);
void createPageClose(QString);
void currentChanged(int);
void checkCurrentIpv4Conflict(const QString &address);
void checkCurrentIpv6Conflict(const QString &address);
};
#endif // NETDETAIL_H

View File

@ -24,8 +24,8 @@
#define DETAIL_MIN_LABEL_WIDTH 80
#define DETAIL_MIN_EDIT_WIDTH 390
#define MIN_LABEL_WIDTH 138
#define MIN_EDIT_WIDTH 286
#define MIN_LABEL_WIDTH 146
#define MIN_EDIT_WIDTH 278
SecurityPage::SecurityPage(bool isNetDetailPage, QWidget *parent) : isDetailPage(isNetDetailPage), QFrame(parent)
{
@ -35,6 +35,7 @@ SecurityPage::SecurityPage(bool isNetDetailPage, QWidget *parent) : isDetailPage
void SecurityPage::initUI()
{
mainLayout = new QVBoxLayout(this);
secuTypeLabel = new QLabel(this);
pwdLabel = new QLabel(this);
//企业wifi共有
@ -44,13 +45,18 @@ void SecurityPage::initUI()
domainLable = new QLabel(this);
caCertPathLabel = new QLabel(this);
caNeedFlagLabel = new QLabel(this);
clientCertPathLabel = new QLabel(this);
clientPrivateKeyLabel = new QLabel(this);
clientPrivateKeyPwdLabel = new QLabel(this);
pwdOptionLabel = new QLabel(this);
clientCertPathLabel = new FixLabel(this);
clientCertPathLabel->setFixedWidth(MIN_LABEL_WIDTH);
clientPrivateKeyLabel = new FixLabel(this);
clientPrivateKeyLabel->setFixedWidth(MIN_LABEL_WIDTH);
clientPrivateKeyPwdLabel = new FixLabel(this);
clientPrivateKeyPwdLabel->setFixedWidth(MIN_LABEL_WIDTH);
pwdOptionLabel = new FixLabel(this);
pwdOptionLabel->setFixedWidth(MIN_LABEL_WIDTH);
//PEAP TTLS共有
eapMethodLabel = new QLabel(this);
eapMethodLabel = new FixLabel(this);
eapMethodLabel->setFixedWidth(MIN_LABEL_WIDTH);
userNameLabel = new QLabel(this);
userPwdLabel = new QLabel(this);
userPwdFlagLabel = new QLabel(this);
@ -82,6 +88,21 @@ void SecurityPage::initUI()
queryLayout->addWidget(userPwdFlagLabel);
queryLayout->addStretch();
//记住该网络复选框
m_emptyLabel = new QLabel(this);
m_emptyLabel->setMinimumWidth(MIN_LABEL_WIDTH - 8);
m_checkLabel = new QLabel(this);
m_checkLabel->setText(tr("Remember the Network")); //记住该网络
m_rememberCheckBox = new QCheckBox(this);
m_rememberCheckBox->setChecked(true);
QWidget *checkWidget = new QWidget(this);
QHBoxLayout *rememberLayout = new QHBoxLayout(checkWidget);
rememberLayout->setContentsMargins(0, 0, 0, 0);
rememberLayout->addWidget(m_emptyLabel);
rememberLayout->addWidget(m_rememberCheckBox);
rememberLayout->addWidget(m_checkLabel);
rememberLayout->addStretch();
// mSecuLayout = new QFormLayout(this);
// mSecuLayout->setContentsMargins(0, 0, 0, 0);
// mSecuLayout->addRow(secuTypeLabel, secuTypeCombox);
@ -99,7 +120,7 @@ void SecurityPage::initUI()
// mSecuLayout->addRow(userPwdLabel, userPwdEdit);
// mSecuLayout->addRow(userPwdFlagBox, userPwdFlagLabel);
topLayout = new QGridLayout(this);
topLayout = new QGridLayout();
topLayout->setContentsMargins(0, 0, 0, 0);
topLayout->setVerticalSpacing(16);
// 安全 Label和选项框 第0行第0列第1列
@ -138,6 +159,7 @@ void SecurityPage::initUI()
bottomLayout = new QGridLayout(tlsWidget);
bottomLayout->setContentsMargins(0, 0, 0, 0);
bottomLayout->setVerticalSpacing(8);
bottomLayout->setHorizontalSpacing(0);
// 域 Label和输入框 第0行第0列第1列
bottomLayout->addWidget(domainLable, 0, 0);
bottomLayout->addWidget(domainEdit, 0, 1);
@ -159,18 +181,24 @@ void SecurityPage::initUI()
bottomLayout->addWidget(pwdOptionLabel, 6, 0);
bottomLayout->addWidget(pwdOptionCombox, 6, 1);
if(isDetailPage) {
if (isDetailPage) {
checkWidget->hide();
topLayout->addWidget(queryWidget, 7, 1);
changeColumnWidthWithSecuType();
} else {
queryWidget->hide();
topLayout->setColumnMinimumWidth(0, MIN_LABEL_WIDTH);
topLayout->setColumnMinimumWidth(1, MIN_EDIT_WIDTH);
bottomLayout->setColumnMinimumWidth(0, MIN_LABEL_WIDTH);
bottomLayout->setColumnMinimumWidth(0, MIN_LABEL_WIDTH - 8);
}
topLayout->addWidget(tlsWidget, 7, 0, 6, 2);
mainLayout->setContentsMargins(0, 0, 0, 0);
mainLayout->setSpacing(0);
mainLayout->addLayout(topLayout);
mainLayout->addWidget(checkWidget);
mainLayout->addStretch();
secuTypeLabel->setText(tr("Security"));
pwdLabel->setText(tr("Password"));
@ -183,15 +211,15 @@ void SecurityPage::initUI()
domainLable->setText(tr("Domain"));
caCertPathLabel->setText(tr("CA certficate"));
caNeedFlagLabel->setText(tr("no need for CA certificate"));
clientCertPathLabel->setText(tr("User certificate"));
clientPrivateKeyLabel->setText(tr("User private key"));
clientPrivateKeyPwdLabel->setText(tr("User key password"));
pwdOptionLabel->setText(tr("Password options"));
clientCertPathLabel->setLabelText(tr("User certificate"));
clientPrivateKeyLabel->setLabelText(tr("User private key"));
clientPrivateKeyPwdLabel->setLabelText(tr("User key password"));
pwdOptionLabel->setLabelText(tr("Password options"));
identityEdit->setPlaceholderText(tr("Required"));
clientPrivateKeyPwdEdit->setPlaceholderText(hintRequired);
//PEAP TTLS共有
eapMethodLabel->setText(tr("Ineer authentication"));
eapMethodLabel->setLabelText(tr("Ineer authentication"));
userNameLabel->setText(tr("Usename"));
userPwdLabel->setText(tr("Password"));
userPwdFlagLabel->setText(tr("Ask pwd each query"));
@ -667,6 +695,7 @@ void SecurityPage::updateSecurityChange(KyWirelessConnectSetting &setting)
} else if (secuTypeCombox->currentData().toInt() == WPA3_PERSONAL) {
setting.m_type = SAE;
}
setting.isAutoConnect = m_rememberCheckBox->isChecked();
}
bool SecurityPage::checkConnectBtnIsEnabled()
@ -872,7 +901,7 @@ void SecurityPage::changeColumnWidthWithSecuType()
eapMethodCombox->currentData().toInt() == TLS) {
topLayout->setColumnMinimumWidth(0, MIN_LABEL_WIDTH);
topLayout->setColumnMinimumWidth(1, MIN_EDIT_WIDTH);
bottomLayout->setColumnMinimumWidth(0, MIN_LABEL_WIDTH);
bottomLayout->setColumnMinimumWidth(0, MIN_LABEL_WIDTH - 8);
} else {
topLayout->setColumnMinimumWidth(0, DETAIL_MIN_LABEL_WIDTH);

View File

@ -28,6 +28,7 @@
#include <QCheckBox>
#include "coninfo.h"
#include "detailwidget.h"
#include "kwidget.h"
#include "kpasswordedit.h"
@ -59,6 +60,7 @@ private:
// QFormLayout *mSecuLayout;
QGridLayout *topLayout;
QGridLayout *bottomLayout;
QVBoxLayout *mainLayout;
QLabel *secuTypeLabel;
QLabel *pwdLabel;
@ -69,13 +71,13 @@ private:
QLabel *domainLable;
QLabel *caCertPathLabel;
QLabel *caNeedFlagLabel;
QLabel *clientCertPathLabel;
QLabel *clientPrivateKeyLabel;
QLabel *clientPrivateKeyPwdLabel;
QLabel *pwdOptionLabel;
FixLabel *clientCertPathLabel;
FixLabel *clientPrivateKeyLabel;
FixLabel *clientPrivateKeyPwdLabel;
FixLabel *pwdOptionLabel;
//PEAP TTLS共有
QLabel *eapMethodLabel;
FixLabel *eapMethodLabel;
QLabel *userNameLabel;
QLabel *userPwdLabel;
QLabel *userPwdFlagLabel;
@ -100,6 +102,10 @@ private:
KPasswordEdit *userPwdEdit = nullptr;
QCheckBox *userPwdFlagBox;
QLabel *m_emptyLabel = nullptr;
QLabel *m_checkLabel = nullptr;
QCheckBox *m_rememberCheckBox = nullptr;
QString hintRequired = tr("Required"); //必填
QString emptyhint = tr(" ");

View File

@ -46,7 +46,7 @@ void FirewallDialog::initUI()
QWidget *contentWidget = new QWidget(this);
QGridLayout *contentLayout = new QGridLayout(contentWidget);
contentLayout->setContentsMargins(0, 0, 0, 0);
contentLayout->addWidget(m_iconLabel, 0, 0, Qt::AlignTop);
contentLayout->addWidget(m_iconLabel, 0, 0, Qt::AlignVCenter);
contentLayout->addWidget(m_contentLabel, 0, 1);
contentLayout->addWidget(m_suggestLabel, 1, 1);
m_iconLabel->setFixedWidth(16);
@ -59,7 +59,7 @@ void FirewallDialog::initUI()
btnLayout->addWidget(m_YesBtn);
btnLayout->addWidget(m_NoBtn);
m_dialogLayout->setContentsMargins(24, 0, 24, 24);
m_dialogLayout->setContentsMargins(24, 16, 24, 24);
m_dialogLayout->setSpacing(0);
m_dialogLayout->addWidget(contentWidget);
m_dialogLayout->addStretch();
@ -69,17 +69,17 @@ void FirewallDialog::initUI()
m_iconLabel->setPixmap(icon.pixmap(ICON_SIZE));
QFont font = m_contentLabel->font();
font.setWeight(75);
font.setWeight(57);
m_contentLabel->setFont(font);
//是否允许你的电脑被此网络上的其他电脑和设备发现?
m_contentLabel->setText(tr("Allow your computer to be discovered by other computers and devices on this network"));
//是否允许此网络上的其他设备发现这台电脑
m_contentLabel->setText(tr("Allow other devices on this network to discover this computer?"));
m_contentLabel->setWordWrap(true);
//建议家庭和工作网络上而非公共网络上启此功能
m_suggestLabel->setText(tr("It is recommended that you enable this feature on your home and work networks rather than public networks."));
//建议在公共网络上启此功能
m_suggestLabel->setText(tr("It is not recommended to enable this feature on public networks"));
m_suggestLabel->setWordWrap(true);
m_YesBtn->setText(tr("Yse"));
m_NoBtn->setText(tr("No"));
m_YesBtn->setText(tr("Not allowed (recommended)"));
m_NoBtn->setText(tr("Allowed"));
this->closeButton();
this->mainWidget()->setLayout(m_dialogLayout);

View File

@ -35,10 +35,13 @@ class FirewallDialog : public KDialog
public:
explicit FirewallDialog(KDialog *parent = nullptr);
~FirewallDialog();
void setUuid(QString uuid) {
m_uuid = uuid;
}
private:
void initUI();
QString m_uuid;
QLabel * m_iconLabel = nullptr;
QLabel * m_contentLabel = nullptr;
QLabel * m_suggestLabel = nullptr;
@ -49,5 +52,12 @@ private:
Q_SIGNALS:
void setPublicNetMode();
void setPrivateNetMode();
public Q_SLOTS:
void closeMyself(QString uuid, int status) {
if (uuid == m_uuid && status == 4) {
this->close();
}
}
};
#endif // FIREWALLDIALOG_H

View File

@ -329,6 +329,19 @@ void LanPage::constructActiveConnectionArea()
QListWidgetItem *p_listWidgetItem = addNewItem(p_activeConnectionItem, m_activatedLanListWidget);
m_activeConnectionMap.insert(p_activeConnectionItem->m_connectUuid, p_listWidgetItem);
int configType = NetworkModeConfig::getInstance()->getNetworkModeConfig(p_activeConnectionItem->m_connectUuid);
if (configType == -1) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(p_activeConnectionItem->m_connectUuid,
m_currentDeviceName,
p_activeConnectionItem->m_connectName,
KSC_FIREWALL_PUBLIC);
} else {
NetworkModeConfig::getInstance()->setNetworkModeConfig(p_activeConnectionItem->m_connectUuid,
m_currentDeviceName,
p_activeConnectionItem->m_connectName,
configType);
}
delete p_activeConnectionItem;
p_activeConnectionItem = nullptr;
}
@ -364,7 +377,7 @@ void LanPage::constructConnectionArea()
}
}
if (m_inactivatedLanListWidget->count() < MAX_ITEMS) {
if (m_inactivatedLanListWidget->count() <= MAX_ITEMS) {
m_inactivatedLanListWidget->setFixedWidth(MIN_WIDTH);
} else {
m_inactivatedLanListWidget->setFixedWidth(MAX_WIDTH);
@ -410,7 +423,7 @@ bool LanPage::removeConnectionItem(QMap<QString, QListWidgetItem *> &connectMap,
p_listWidgetItem = nullptr;
iter = connectMap.erase(iter);
if (m_inactivatedLanListWidget->count() < MAX_ITEMS) {
if (m_inactivatedLanListWidget->count() <= MAX_ITEMS) {
m_inactivatedLanListWidget->setFixedWidth(MIN_WIDTH);
}
return true;
@ -463,7 +476,7 @@ void LanPage::onAddConnection(QString uuid) //新增一个有线
delete p_newItem;
p_newItem = nullptr;
if (m_inactivatedLanListWidget->count() >= MAX_ITEMS) {
if (m_inactivatedLanListWidget->count() > MAX_ITEMS) {
m_inactivatedLanListWidget->setFixedWidth(MAX_WIDTH);
}
}
@ -799,7 +812,7 @@ void LanPage::updateActivatedConnectionArea(KyConnectItem *p_newItem)
m_activeConnectionMap.insert(p_newItem->m_connectUuid, p_listWidgetItem);
// this->showDesktopNotify(tr("LAN Connected Successfully"), "networkconnected");
}
if (m_inactivatedLanListWidget->count() < MAX_ITEMS) {
if (m_inactivatedLanListWidget->count() <= MAX_ITEMS) {
m_inactivatedLanListWidget->setFixedWidth(MIN_WIDTH);
}
@ -823,7 +836,7 @@ void LanPage::updateConnectionArea(KyConnectItem *p_newItem)
m_inactiveConnectionMap.insert(p_newItem->m_connectUuid, p_listWidgetItem);
// this->showDesktopNotify(tr("LAN Disconnected Successfully"), "networkdisconnected");
}
if (m_inactivatedLanListWidget->count() < MAX_ITEMS) {
if (m_inactivatedLanListWidget->count() <= MAX_ITEMS) {
m_inactivatedLanListWidget->setFixedWidth(MIN_WIDTH);
} else {
m_inactivatedLanListWidget->setFixedWidth(MAX_WIDTH);
@ -883,6 +896,10 @@ void LanPage::onConnectionStateChange(QString uuid,
sendLanStateChangeSignal(uuid, (ConnectState)state);
if (m_activeConnectionMap.keys().contains(uuid) && state == NetworkManager::ActiveConnection::State::Activated) {
return;
}
qDebug()<<"[LanPage] connection uuid"<< uuid
<< "state change slot:"<< state;
@ -903,23 +920,24 @@ void LanPage::onConnectionStateChange(QString uuid,
int configType = NetworkModeConfig::getInstance()->getNetworkModeConfig(uuid);
if (configType == -1) {
FirewallDialog *fireWallDiaglog = new FirewallDialog();
fireWallDiaglog->setWindowTitle(p_newItem->m_connectName);
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PUBLIC); //默认公有配置
FirewallDialog *fireWallDialog = new FirewallDialog();
fireWallDialog->setUuid(uuid);
fireWallDialog->setWindowTitle(ssid);
connect(fireWallDiaglog, &FirewallDialog::setPrivateNetMode, this, [=](){
fireWallDiaglog->close();
connect(fireWallDialog, &FirewallDialog::setPrivateNetMode, this, [=](){
fireWallDialog->hide();
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PRIVATE);
});
connect(fireWallDiaglog, &FirewallDialog::setPublicNetMode, this, [=](){
fireWallDiaglog->close();
connect(fireWallDialog, &FirewallDialog::setPublicNetMode, this, [=](){
fireWallDialog->hide();
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PUBLIC);
});
connect(fireWallDiaglog, &FirewallDialog::close, this, [=](){
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PUBLIC);
});
fireWallDiaglog->show();
connect(m_activeResourse, &KyActiveConnectResourse::stateChangeReason, fireWallDialog, &FirewallDialog::closeMyself);
fireWallDialog->show();
} else if (configType == KSC_FIREWALL_PUBLIC) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, deviceName, ssid, KSC_FIREWALL_PUBLIC);
} else if (configType == KSC_FIREWALL_PRIVATE) {

View File

@ -94,16 +94,17 @@ void TabPage::initUI()
m_inactivatedNetLabel = new QLabel(m_inactivatedNetFrame);
m_inactivatedNetLabel->setContentsMargins(TEXT_MARGINS);
m_inactivatedNetListArea = new QScrollArea(m_inactivatedNetFrame);
m_inactivatedNetListArea->setFrameShape(QFrame::Shape::NoFrame);
m_inactivatedNetListArea->setWidgetResizable(true);
m_inactivatedNetListArea->setBackgroundRole(QPalette::Base);
m_inactivatedNetListArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
m_inactivatedNetListArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
// m_inactivatedNetListArea = new QScrollArea(m_inactivatedNetFrame);
// m_inactivatedNetListArea->setFrameShape(QFrame::Shape::NoFrame);
// m_inactivatedNetListArea->setWidgetResizable(true);
// m_inactivatedNetListArea->setBackgroundRole(QPalette::Base);
// m_inactivatedNetListArea->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
// m_inactivatedNetListArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
m_inactivatedNetListArea = new QWidget(m_inactivatedNetFrame);
m_inactivatedAreaLayout = new QVBoxLayout(m_inactivatedNetListArea);
m_inactivatedAreaLayout->setSpacing(MAIN_LAYOUT_SPACING);
m_inactivatedAreaLayout->setContentsMargins(MAIN_LAYOUT_MARGINS);
m_inactivatedNetListArea->setLayout(m_inactivatedAreaLayout);
// m_inactivatedNetListArea->setLayout(m_inactivatedAreaLayout);
m_inactivatedNetLayout->addWidget(m_inactivatedNetLabel);
m_inactivatedNetLayout->addWidget(m_inactivatedNetListArea);
@ -133,9 +134,9 @@ void TabPage::initUI()
m_mainLayout->addWidget(m_inactivatedNetDivider);
m_mainLayout->addWidget(m_settingsFrame);
QPalette pal = m_inactivatedNetListArea->palette();
pal.setBrush(QPalette::Base, QColor(0,0,0,0)); //背景透明
m_inactivatedNetListArea->setPalette(pal);
// QPalette pal = m_inactivatedNetListArea->palette();
// pal.setBrush(QPalette::Base, QColor(0,0,0,0)); //背景透明
// m_inactivatedNetListArea->setPalette(pal);
onPaletteChanged();
}

View File

@ -52,7 +52,7 @@ enum network_mode {
#define DEVICE_LAYOUT_MARGINS 24,0,24,8
#define DEVICE_COMBOBOX_WIDTH 180
#define ACTIVE_NET_LAYOUT_MARGINS 8,8,8,8
#define NET_LAYOUT_MARGINS 8,8,0,3
#define NET_LAYOUT_MARGINS 8,8,0,1
#define NET_LAYOUT_SPACING 8
#define NET_LIST_SPACING 0
#define TEXT_MARGINS 16,0,0,0
@ -63,8 +63,8 @@ enum network_mode {
#define ACTIVE_AREA_MAX_HEIGHT 92
#define MAX_ITEMS 4
#define MAX_WIDTH 400
#define MIN_WIDTH 383
#define MAX_WIDTH 408
#define MIN_WIDTH 396
#define SCROLL_STEP 4
@ -131,7 +131,8 @@ protected:
QFrame * m_inactivatedNetFrame = nullptr;
QVBoxLayout * m_inactivatedNetLayout = nullptr;
QLabel * m_inactivatedNetLabel = nullptr;
QScrollArea * m_inactivatedNetListArea = nullptr;
// QScrollArea * m_inactivatedNetListArea = nullptr;
QWidget * m_inactivatedNetListArea = nullptr;
QVBoxLayout * m_inactivatedAreaLayout = nullptr;
Divider * m_inactivatedNetDivider = nullptr;

View File

@ -37,6 +37,8 @@ const QString IsApConnection = "1";
WlanPage::WlanPage(QWidget *parent) : TabPage(parent)
{
qRegisterMetaType<NetworkManager::Device::State>("NetworkManager::Device::State");
qRegisterMetaType<NetworkManager::Device::StateChangeReason>("NetworkManager::Device::StateChangeReason");
m_wirelessNetResource = new KyWirelessNetResource(this);
m_activatedConnectResource = new KyActiveConnectResourse(this);
m_netDeviceResource=new KyNetworkDeviceResourse(this);
@ -67,6 +69,8 @@ WlanPage::WlanPage(QWidget *parent) : TabPage(parent)
connect(m_netDeviceResource, &KyNetworkDeviceResourse::deviceRemove, this, &WlanPage::onDeviceRemove);
connect(m_netDeviceResource, &KyNetworkDeviceResourse::deviceNameUpdate, this, &WlanPage::onDeviceNameUpdate);
connect(m_netDeviceResource, &KyNetworkDeviceResourse::stateChanged, this, &WlanPage::onWlanStateChanged);
connect(m_wirelessConnectOpreation, &KyWirelessConnectOperation::activateConnectionError, this, &WlanPage::activateFailed);
connect(m_wirelessConnectOpreation, &KyWirelessConnectOperation::addAndActivateConnectionError, this, &WlanPage::activateFailed);
connect(m_wirelessConnectOpreation, &KyWirelessConnectOperation::deactivateConnectionError, this, &WlanPage::deactivateFailed);
@ -86,13 +90,11 @@ bool WlanPage::eventFilter(QObject *w, QEvent *e)
}
} else if (w == m_netSwitch) {
if (e->type() == QEvent::MouseButtonRelease) {
if (m_devList.isEmpty()) {
if (!getSwitchBtnEnable()) {
showDesktopNotify(tr("No wireless network card detected"), "networkwrong");
//检测不到无线网卡不再触发click信号
m_netSwitch->setChecked(false);
m_netSwitch->setCheckable(false);
} else {
m_wirelessConnectOpreation->setWirelessEnabled(!m_netSwitch->isChecked());
setWirelessEnable(!getSwitchBtnState());
}
return true;
}
@ -136,47 +138,37 @@ void WlanPage::initWlanUI()
m_netSwitch->installEventFilter(this);
}
void WlanPage::onWlanSwithGsettingsChanged(const QString &key)
bool WlanPage::getWirelessDevieceUseable()
{
if (key == WIRELESS_SWITCH) {
m_wlanSwitchEnable = m_switchGsettings->get(WIRELESS_SWITCH).toBool();
qDebug() << LOG_FLAG << "wlan switch state" << m_wlanSwitchEnable;
if (m_wirelessConnectOpreation->getWirelessEnabled() != m_wlanSwitchEnable) {
// 根据Gsetting更新开关状态
m_wirelessConnectOpreation->setWirelessEnabled(m_wlanSwitchEnable);
for (auto devname : m_devList) {
if (m_netDeviceResource->getDeviceState(devname) >= NetworkManager::Device::Disconnected) {
return true;
}
m_netSwitch->setChecked(m_wlanSwitchEnable);
initDeviceCombox();
initWlanArea();
}
return false;
}
void WlanPage::setWirelessEnable(bool state)
{
m_wirelessConnectOpreation->setWirelessEnabled(state);
return;
}
bool WlanPage::getWirelessEnable()
{
return m_wirelessConnectOpreation->getWirelessEnabled();
}
void WlanPage::initWlanSwitchState()
{
bool wirelessGsetting = true;
if (QGSettings::isSchemaInstalled(GSETTINGS_SCHEMA)) {
m_switchGsettings = new QGSettings(GSETTINGS_SCHEMA);
if (m_switchGsettings->keys().contains(WIRELESS_SWITCH)) {
if (m_devList.isEmpty()) {
m_netSwitch->setChecked(false);
m_netSwitch->setCheckable(false);
} else {
wirelessGsetting = m_switchGsettings->get(WIRELESS_SWITCH).toBool();
if (m_wirelessConnectOpreation->getWirelessEnabled()
!= wirelessGsetting) {
//以gsetting为准
m_wirelessConnectOpreation->setWirelessEnabled(wirelessGsetting);
}
m_netSwitch->setChecked(wirelessGsetting);
}
connect(m_switchGsettings, &QGSettings::changed, this, &WlanPage::onWlanSwithGsettingsChanged);
}
if (m_devList.isEmpty()) {
setSwitchBtnState(false);
setSwitchBtnEnable(false);
return ;
}
m_netSwitch->setChecked(wirelessGsetting);
m_wlanSwitchEnable = wirelessGsetting;
setSwitchBtnEnable(true);
setSwitchBtnState(getWirelessDevieceUseable());
return;
}
@ -209,7 +201,7 @@ void WlanPage::initDeviceCombox()
this, &WlanPage::onDeviceComboxIndexChanged);
m_deviceComboBox->clear();
if (m_netSwitch->isChecked()) {
if (getSwitchBtnState()) {
if (0 == m_devList.count()) {
m_deviceFrame->show();
m_tipsLabel->show();
@ -393,7 +385,7 @@ void WlanPage::deleteWirelessItemFormMap(QMap<QString, QListWidgetItem*> &wirele
delete p_listWidgetItem;
p_listWidgetItem = nullptr;
if (m_inactivatedNetListWidget->count() < MAX_ITEMS) {
if (m_inactivatedNetListWidget->count() <= MAX_ITEMS) {
m_inactivatedNetListWidget->setFixedWidth(MIN_WIDTH);
}
return;
@ -425,6 +417,19 @@ void WlanPage::constructActivateConnectionArea()
m_activateConnectionItemMap.insert(wirelessNetItem.m_NetSsid, p_listWidgetItem);
updateWlanItemState(m_activatedNetListWidget, p_listWidgetItem, Activated);
int configType = NetworkModeConfig::getInstance()->getNetworkModeConfig(wirelessNetItem.m_connectUuid);
if (configType == -1) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(wirelessNetItem.m_connectUuid,
m_currentDevice,
wirelessNetItem.m_connName,
KSC_FIREWALL_PUBLIC);
} else {
NetworkModeConfig::getInstance()->setNetworkModeConfig(wirelessNetItem.m_connectUuid,
m_currentDevice,
wirelessNetItem.m_connName,
configType);
}
height += p_listWidgetItem->sizeHint().height();
}
}
@ -471,7 +476,7 @@ void WlanPage::constructWirelessNetArea()
qDebug() << "[WlanPage] Stopped loading wireless net list! time="
<< QDateTime::currentDateTime().toString("hh:mm:ss.zzzz");
if (m_inactivatedNetListWidget->count() < MAX_ITEMS) {
if (m_inactivatedNetListWidget->count() <= MAX_ITEMS) {
m_inactivatedNetListWidget->setFixedWidth(MIN_WIDTH);
} else {
m_inactivatedNetListWidget->setFixedWidth(MAX_WIDTH);
@ -481,7 +486,7 @@ void WlanPage::constructWirelessNetArea()
void WlanPage::initWlanArea()
{
if (m_netSwitch->isChecked()) {
if (getSwitchBtnState()) {
m_activatedNetFrame->show();
m_activatedNetDivider->show();
constructActivateConnectionArea();
@ -526,7 +531,7 @@ void WlanPage::onWlanAdded(QString interface, KyWirelessNetItem &item)
updateWlanItemState(m_inactivatedNetListWidget, p_listWidgetItem, Deactivated);
addWlanMoreItem();
if (m_inactivatedNetListWidget->count() >= MAX_ITEMS) {
if (m_inactivatedNetListWidget->count() > MAX_ITEMS) {
m_inactivatedNetListWidget->setFixedWidth(MAX_WIDTH);
}
return;
@ -643,7 +648,7 @@ void WlanPage::addDeviceToCombox(QString deviceName)
{
disconnect(m_deviceComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &WlanPage::onDeviceComboxIndexChanged);
if (m_netSwitch->isChecked()) {
if (getSwitchBtnState()) {
if (m_currentDevice.isEmpty()){
m_deviceFrame->hide();
m_currentDevice = deviceName;
@ -675,13 +680,10 @@ void WlanPage::onDeviceAdd(QString deviceName, NetworkManager::Device::Type devi
return;
}
if (m_devList.isEmpty()) {
bool wlanSwitch = m_switchGsettings->get(WIRELESS_SWITCH).toBool();
m_netSwitch->setCheckable(true);
m_netSwitch->setChecked(wlanSwitch);
}
m_devList << deviceName;
setSwitchBtnEnable(true);
setSwitchBtnState(getWirelessDevieceUseable());
addDeviceToCombox(deviceName);
if (m_currentDevice == deviceName) {
initWlanArea();
@ -697,7 +699,7 @@ void WlanPage::deleteDeviceFromCombox(QString deviceName)
disconnect(m_deviceComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged),
this, &WlanPage::onDeviceComboxIndexChanged);
if (m_netSwitch->isChecked()) {
if (getSwitchBtnState()) {
if (0 == m_devList.count()) {
m_deviceFrame->hide();
//m_tipsLabel->show();
@ -738,8 +740,8 @@ void WlanPage::onDeviceRemove(QString deviceName)
deleteDeviceFromCombox(deviceName);
if (m_devList.isEmpty()) {
m_netSwitch->setChecked(false);
m_netSwitch->setCheckable(false);
setSwitchBtnState(false);
setSwitchBtnEnable(false);
}
if (originalDeviceName == deviceName) {
@ -786,6 +788,17 @@ void WlanPage::onDeviceNameUpdate(QString oldName, QString newName)
Q_EMIT deviceNameChanged(oldName, newName, WIRELESS);
}
void WlanPage::onWlanStateChanged(NetworkManager::Device::State newstate, NetworkManager::Device::State oldstate, NetworkManager::Device::StateChangeReason reason)
{
if (getSwitchBtnState() == getWirelessDevieceUseable()) {
return ;
}
setSwitchBtnState(getWirelessDevieceUseable());
initDeviceCombox();
initWlanArea();
Q_EMIT wirelessSwitchBtnChanged(getSwitchBtnState());
}
void WlanPage::sendApStateChangeSignal(QString uuid,
QString ssid,
QString deviceName,
@ -853,7 +866,7 @@ void WlanPage::updateActivatedArea(QString uuid, QString ssid, QString devName)
m_activateConnectionItemMap.insert(wirelessNetItem.m_NetSsid, p_listWidgetItem);
m_activatedNetListWidget->setFixedHeight(p_listWidgetItem->sizeHint().height());
if (m_inactivatedNetListWidget->count() < MAX_ITEMS) {
if (m_inactivatedNetListWidget->count() <= MAX_ITEMS) {
m_inactivatedNetListWidget->setFixedWidth(MIN_WIDTH);
}
return;
@ -866,10 +879,22 @@ void WlanPage::updateWirelessNetArea(QString uuid, QString ssid, QString devName
}
if (m_activateConnectionItemMap.contains(ssid)) {
deleteWirelessItemFormMap(m_activateConnectionItemMap, m_activatedNetListWidget, ssid);
QListWidgetItem *p_activeListWidgetItem = addEmptyItem(m_activatedNetListWidget);
m_activateConnectionItemMap.insert(EMPTY_SSID, p_activeListWidgetItem);
m_activatedNetListWidget->setFixedHeight(p_activeListWidgetItem->sizeHint().height());
QListWidgetItem *p_listWidgetItem = m_activateConnectionItemMap.value(ssid);
if (nullptr == p_listWidgetItem) {
qWarning()<< LOG_FLAG <<"wireless item is not exsit, it's ssid is " << ssid;
return;
}
WlanListItem *p_wlanItem = (WlanListItem *)m_activatedNetListWidget->itemWidget(p_listWidgetItem);
if (nullptr == p_wlanItem) {
qWarning() << LOG_FLAG << "p_wlanItem is null";
return;
}
if (p_wlanItem->getUuid() == uuid) {
deleteWirelessItemFormMap(m_activateConnectionItemMap, m_activatedNetListWidget, ssid);
QListWidgetItem *p_activeListWidgetItem = addEmptyItem(m_activatedNetListWidget);
m_activateConnectionItemMap.insert(EMPTY_SSID, p_activeListWidgetItem);
m_activatedNetListWidget->setFixedHeight(p_activeListWidgetItem->sizeHint().height());
}
} else {
qDebug() << LOG_FLAG << ssid << "is not in activeconnection map";
}
@ -886,7 +911,7 @@ void WlanPage::updateWirelessNetArea(QString uuid, QString ssid, QString devName
// 更新更多条目以保证其处于listwidget的最底部
addWlanMoreItem();
if (m_inactivatedNetListWidget->count() < MAX_ITEMS) {
if (m_inactivatedNetListWidget->count() <= MAX_ITEMS) {
m_inactivatedNetListWidget->setFixedWidth(MIN_WIDTH);
} else {
m_inactivatedNetListWidget->setFixedWidth(MAX_WIDTH);
@ -905,7 +930,8 @@ void WlanPage::onConnectionStateChanged(QString uuid,
qDebug()<< LOG_FLAG << "Q_EMIT wlanActiveConnectionStateChanged" << devName << ssid << state;
Q_EMIT wlanActiveConnectionStateChanged(devName, ssid, uuid, state);
if (ssid.isEmpty() || devName.isEmpty()) {
//解决通过高级设置添加的未指定网卡的无线连接无法断开的问题,去掉设备为空的判断
if (ssid.isEmpty()) {
qDebug()<< LOG_FLAG << "ssid or devicename is empty"
<< "devicename"<< devName <<"ssid"<<ssid;
return;
@ -931,7 +957,7 @@ void WlanPage::onConnectionStateChanged(QString uuid,
}
}
if (devName != m_currentDevice) {
if (!devName.isEmpty() && devName != m_currentDevice) {
return;
}
@ -942,24 +968,25 @@ void WlanPage::onConnectionStateChanged(QString uuid,
if (!isApConnection) {
int configType = NetworkModeConfig::getInstance()->getNetworkModeConfig(uuid);
if (configType == -1) {
FirewallDialog *fireWallDiaglog = new FirewallDialog();
fireWallDiaglog->setWindowTitle(ssid);
connect(fireWallDiaglog, &FirewallDialog::setPrivateNetMode, this, [=](){
fireWallDiaglog->close();
if (configType == -1) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, devName, 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, devName, ssid, KSC_FIREWALL_PRIVATE);
});
connect(fireWallDiaglog, &FirewallDialog::setPublicNetMode, this, [=](){
fireWallDiaglog->close();
connect(fireWallDialog, &FirewallDialog::setPublicNetMode, this, [=](){
fireWallDialog->hide();
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, devName, ssid, KSC_FIREWALL_PUBLIC);
});
connect(fireWallDiaglog, &FirewallDialog::close, this, [=](){
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, devName, ssid, KSC_FIREWALL_PUBLIC);
});
connect(m_activatedConnectResource, &KyActiveConnectResourse::stateChangeReason, fireWallDialog, &FirewallDialog::closeMyself);
fireWallDiaglog->show();
fireWallDialog->show();
} else if (configType == KSC_FIREWALL_PUBLIC) {
NetworkModeConfig::getInstance()->setNetworkModeConfig(uuid, devName, ssid, KSC_FIREWALL_PUBLIC);
@ -975,6 +1002,9 @@ void WlanPage::onConnectionStateChanged(QString uuid,
}
} else if (state == NetworkManager::ActiveConnection::State::Deactivated) {
m_updateStrength = true;
if (devName.isEmpty()) {
devName = m_currentDevice;
}
updateWirelessNetArea(uuid, ssid, devName);
if (m_wirelessNetItemMap.contains(ssid)) {
QListWidgetItem *p_listWidgetItem = m_wirelessNetItemMap.value(ssid);
@ -1095,23 +1125,6 @@ void WlanPage::onWifiEnabledChanged(bool isWifiOn)
{
//监听外部命令导致wifi状态变化更新界面
qDebug() << "[WlanPage] onWifiEnabledChanged wifi state" << isWifiOn;
isWifiOn = m_wirelessConnectOpreation->getWirelessEnabled();
//应该先检测是否有无线网卡可用,才改变开关状态
if (m_devList.isEmpty()) {
qDebug() << "[WLanPage] have no device to use " << Q_FUNC_INFO << __LINE__;
return;
}
if (m_wlanSwitchEnable == isWifiOn) {
return;
} else {
// if (!m_netSwitch->isChecked()) {
// m_netSwitch->setChecked(true);
// }
m_switchGsettings->set(WIRELESS_SWITCH, isWifiOn);
}
return;
}
@ -1283,6 +1296,12 @@ void WlanPage::getWirelessList(QMap<QString, QVector<QStringList> > &map)
return;
}
//for dbus
bool WlanPage::getWirelessSwitchBtnState()
{
return getSwitchBtnState();
}
//开启热点
void WlanPage::activeWirelessAp(const QString apName, const QString apPassword, const QString wirelessBand, const QString apDevice)
{
@ -1475,22 +1494,7 @@ bool WlanPage::checkWlanStatus(NetworkManager::ActiveConnection::State state)
void WlanPage::setWirelessSwitchEnable(bool enable)
{
qDebug() << "dbus setWirelessSwitchEnable = " << enable << __LINE__;
//应该先检测是否有无线网卡可用,才改变开关状态
if (m_devList.isEmpty()) {
qDebug() << "have no device to use " << Q_FUNC_INFO << __LINE__;
//检测不到无线网卡不再触发click信号
m_netSwitch->setChecked(false);
m_netSwitch->setCheckable(false);
}else{
m_wirelessConnectOpreation->setWirelessEnabled(enable);
if (!enable) {
m_netSwitch->setChecked(false);
m_activatedNetFrame->hide();
m_activatedNetDivider->hide();
m_inactivatedNetFrame->hide();
m_deviceFrame->hide();
}
}
setWirelessEnable(enable);
}
void WlanPage::getWirelessDeviceCap(QMap<QString, int> &map)

View File

@ -76,6 +76,8 @@ public:
void getConnectivity(NetworkManager::Connectivity &connectivity);
bool getWirelessSwitchBtnState();
Q_SIGNALS:
void oneItemExpanded(const QString &ssid);
void wlanAdd(QString devName, QStringList info);
@ -93,6 +95,8 @@ Q_SIGNALS:
void connectivityChanged(NetworkManager::Connectivity connectivity);
void wirelessSwitchBtnChanged(bool state);
public Q_SLOTS:
void onMainWindowVisibleChanged(const bool &visible);
void onSecurityTypeChange(QString devName, QString ssid, QString secuType);
@ -115,14 +119,14 @@ private Q_SLOTS:
NetworkManager::ActiveConnection::Reason reason);
void onItemHeightChanged(const bool isExpanded, const QString &ssid);
void onWlanSwithGsettingsChanged(const QString &key);
void onDeviceComboxIndexChanged(int currentIndex);
void onHiddenWlanClicked();
void showControlCenter();
void onWifiEnabledChanged(bool isWifiOn);
void onRefreshIconTimer();
void onWlanStateChanged(NetworkManager::Device::State newstate, NetworkManager::Device::State oldstate, NetworkManager::Device::StateChangeReason reason);
protected:
bool eventFilter(QObject *watched, QEvent *event);
@ -174,6 +178,31 @@ private:
// void wlanShowNotify(QString ssid, NetworkManager::ActiveConnection::State state,
// NetworkManager::ActiveConnection::Reason reason);
//是否存在可用的无线网卡
bool getWirelessDevieceUseable();
void setWirelessEnable(bool state);
bool getWirelessEnable();
inline void setSwitchBtnState(bool state) {
if (m_netSwitch != nullptr) {
m_netSwitch->setChecked(state);
}
}
inline bool getSwitchBtnState() {
if (m_netSwitch != nullptr) {
return m_netSwitch->isChecked();
}
}
inline void setSwitchBtnEnable(bool state) {
if (m_netSwitch != nullptr) {
m_netSwitch->setCheckable(state);
}
}
inline bool getSwitchBtnEnable() {
if (m_netSwitch != nullptr) {
return m_netSwitch->isCheckable();
}
}
private:
QMap<QString, QListWidgetItem*> m_wirelessNetItemMap;
QMap<QString, QListWidgetItem*> m_activateConnectionItemMap;
@ -195,9 +224,6 @@ private:
KyWirelessConnectOperation * m_wirelessConnectOpreation = nullptr;
KyConnectResourse * m_connectResource = nullptr;
QGSettings *m_switchGsettings = nullptr;
bool m_wlanSwitchEnable = true;
bool m_updateStrength = true;
QTimer *m_scanTimer = nullptr;

View File

@ -10,16 +10,16 @@
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="64"/>
<source>Public(recommended) Your device can not be discovered on the network. In most cases, use this feature when connected to a network at home, work, or a public location.</source>
<source>Public(recommended) Devices on the network cannot discover this computer. Generally, it is suitable for networks in public places, such as airports or coffee shops, etc.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="68"/>
<source>Private Your device can be discovered on the network. Select this if you require file sharing or use applications that communicate over this network. You should know and trust the people and devices on the network.</source>
<source>Devices on the network can discover this computer. Generally applicable to a network at home or work where you know and trust the individuals and devices on the network.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="73"/>
<location filename="../src/frontend/netdetails/configpage.cpp" line="72"/>
<source>Config firewall and security settings</source>
<translation type="unfinished"></translation>
</message>
@ -158,17 +158,27 @@
<context>
<name>EnterpriseWlanDialog</name>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="44"/>
<source>Connect Enterprise WLAN</source>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="107"/>
<source>Wi-Fi network requires authentication</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="104"/>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="112"/>
<source>Access to Wi-Fi network &quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="114"/>
<source>&quot; requires a password or encryption key.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="143"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="105"/>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="144"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
@ -176,184 +186,189 @@
<context>
<name>FirewallDialog</name>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="389"/>
<source>Allow your computer to be discovered by other computers and devices on this network</source>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="75"/>
<source>Allow other devices on this network to discover this computer?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="392"/>
<source>It is recommended that you enable this feature on your home and work networks rather than public networks.</source>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="78"/>
<source>It is not recommended to enable this feature on public networks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="395"/>
<source>Yse</source>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="81"/>
<source>Not allowed (recommended)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="396"/>
<source>No</source>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="82"/>
<source>Allowed</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Ipv4Page</name>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="68"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="71"/>
<source>Ipv4Config</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="69"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="72"/>
<source>Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="70"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="73"/>
<source>Netmask</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="71"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="74"/>
<source>Default Gateway</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="72"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="75"/>
<source>Prefs DNS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="73"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="76"/>
<source>Alternative DNS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="107"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="116"/>
<source>Auto(DHCP)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="108"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="117"/>
<source>Manual</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="283"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="298"/>
<source>Invalid address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="292"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="307"/>
<source>Invalid subnet mask</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="311"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="312"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="335"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="336"/>
<source>Required</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="407"/>
<source>Address conflict</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Ipv6Page</name>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="149"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="152"/>
<source>Ipv6Config</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="150"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="153"/>
<source>Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="151"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="154"/>
<source>Subnet prefix Length</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="152"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="155"/>
<source>Default Gateway</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="153"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="156"/>
<source>Prefs DNS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="154"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="157"/>
<source>Alternative DNS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="188"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="197"/>
<source>Auto(DHCP)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="189"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="198"/>
<source>Manual</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="242"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="243"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="244"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="254"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="255"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="256"/>
<source>Required</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="262"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="277"/>
<source>Invalid address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="271"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="286"/>
<source>Invalid gateway</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="345"/>
<source>Address conflict</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>JoinHiddenWiFiPage</name>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="142"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="131"/>
<source>Please enter the network name and security type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="146"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="136"/>
<source>Network name(SSID)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="147"/>
<source>Remember the Network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="148"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="137"/>
<source>Show Network List</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="149"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="138"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="150"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="139"/>
<source>Join</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="153"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="142"/>
<source>Required</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="158"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="144"/>
<source>Find and Join Wi-Fi</source>
<translation type="unfinished"></translation>
</message>
@ -386,27 +401,27 @@
<context>
<name>LanPage</name>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1235"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1254"/>
<source>No ethernet device avaliable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="754"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="768"/>
<source>LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="756"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="770"/>
<source>Activated LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="765"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="779"/>
<source>Inactivated LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1259"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1278"/>
<source>Wired Device not carried</source>
<translation type="unfinished"></translation>
</message>
@ -428,7 +443,6 @@
<name>MainWindow</name>
<message>
<location filename="../src/frontend/mainwindow.cpp" line="188"/>
<location filename="../src/frontend/mainwindow.cpp" line="309"/>
<source>kylin-nm</source>
<translation type="unfinished"></translation>
</message>
@ -447,6 +461,11 @@
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/mainwindow.cpp" line="309"/>
<source>Network tool</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/mainwindow.cpp" line="306"/>
<source>Show MainWindow</source>
@ -456,120 +475,107 @@
<context>
<name>NetDetail</name>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="68"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="73"/>
<source>Kylin NM</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="71"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="76"/>
<source>kylin network desktop message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="282"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="337"/>
<source>Detail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="283"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="338"/>
<source>Ipv4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="284"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="339"/>
<source>Ipv6</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="286"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="341"/>
<source>Security</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="288"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="295"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="343"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="350"/>
<source>Config</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="311"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="366"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="314"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="369"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="317"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="372"/>
<source>Forget this network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="348"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="403"/>
<source>Add Lan Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="353"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="408"/>
<source>connect hiddin wlan</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="509"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="521"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1001"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="568"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="580"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1078"/>
<source>None</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="620"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="621"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="622"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="679"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="680"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="681"/>
<source>Auto</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="738"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="814"/>
<source>start check ipv4 address conflict</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="755"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="831"/>
<source>start check ipv6 address conflict</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="801"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="852"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="940"/>
<source>ipv4 address conflict!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="860"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="948"/>
<source>ipv6 address conflict!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="997"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1074"/>
<source>this wifi no support enterprise type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1002"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1079"/>
<source>this wifi no support None type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1007"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1084"/>
<source>this wifi no support WPA2 type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1010"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1087"/>
<source>this wifi no support WPA3 type</source>
<translation type="unfinished"></translation>
</message>
@ -593,164 +599,169 @@
<context>
<name>SecurityPage</name>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="175"/>
<source>Security</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="176"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="196"/>
<source>Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="180"/>
<source>EAP type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="182"/>
<source>Identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="183"/>
<source>Domain</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="184"/>
<source>CA certficate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="185"/>
<source>no need for CA certificate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="186"/>
<source>User certificate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="187"/>
<source>User private key</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="188"/>
<source>User key password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="189"/>
<source>Password options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="190"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="198"/>
<location filename="../src/frontend/netdetails/securitypage.h" line="103"/>
<source>Required</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="194"/>
<source>Ineer authentication</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="195"/>
<source>Usename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="197"/>
<source>Ask pwd each query</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="201"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="211"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="214"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="217"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="300"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="776"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="797"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="819"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="842"/>
<source>None</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="202"/>
<source>WPA&amp;WPA2 Personal</source>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="95"/>
<source>Remember the Network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="203"/>
<source>WPA&amp;WPA2 Enterprise</source>
<source>Security</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="204"/>
<source>WPA3 Personal</source>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="224"/>
<source>Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="208"/>
<source>EAP type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="210"/>
<source>Identity</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="211"/>
<source>Domain</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="212"/>
<source>CA certficate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="213"/>
<source>no need for CA certificate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="214"/>
<source>User certificate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="215"/>
<source>User private key</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="216"/>
<source>User key password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="217"/>
<source>Password options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="218"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="226"/>
<location filename="../src/frontend/netdetails/securitypage.h" line="109"/>
<source>Required</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="222"/>
<source>Ineer authentication</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="223"/>
<source>Usename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="225"/>
<source>Ask pwd each query</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="229"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="239"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="242"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="245"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="328"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="805"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="826"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="848"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="871"/>
<source>None</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="230"/>
<source>WPA&amp;WPA2 Personal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="231"/>
<source>WPA&amp;WPA2 Enterprise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="232"/>
<source>WPA3 Personal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="240"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="243"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="246"/>
<source>Choose from file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="221"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="249"/>
<source>Store passwords only for this user</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="221"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="249"/>
<source>Store password only for this user</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="223"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="251"/>
<source>Store passwords for all users</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="223"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="251"/>
<source>Store password for all users</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="225"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="253"/>
<source>Ask this password every time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="225"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="253"/>
<source>Ask password every time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="787"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="810"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="832"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="816"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="839"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="861"/>
<source>Choose a CA certificate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="788"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="811"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="833"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="817"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="840"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="862"/>
<source>CA Files (*.pem *.der *.p12 *.crt *.cer *.pfx)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.h" line="104"/>
<location filename="../src/frontend/netdetails/securitypage.h" line="110"/>
<source> </source>
<translation type="unfinished"></translation>
</message>
@ -768,21 +779,39 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="119"/>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="120"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="174"/>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="175"/>
<source>Kylin NM</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="177"/>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="178"/>
<source>kylin network applet desktop message</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>VpnPage</name>
<message>
<location filename="../src/frontend/tab-pages/vpnpage.cpp" line="302"/>
<source>Activated VPN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/vpnpage.cpp" line="311"/>
<source>Inactivated VPN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/vpnpage.cpp" line="733"/>
<source>Wired Device not carried</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WiFiConfigDialog</name>
<message>
@ -829,31 +858,31 @@
<context>
<name>WlanListItem</name>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="62"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="65"/>
<source>Not connected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="155"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="584"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="163"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="614"/>
<source>Disconnect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="157"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="270"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="582"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="165"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="278"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="612"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="164"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="589"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="172"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="619"/>
<source>Forget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="291"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="299"/>
<source>Auto Connect</source>
<translation type="unfinished"></translation>
</message>
@ -869,32 +898,32 @@
<context>
<name>WlanPage</name>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="104"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="107"/>
<source>WLAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="106"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="109"/>
<source>Activated WLAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="116"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="119"/>
<source>Other WLAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="89"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="94"/>
<source>No wireless network card detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="824"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="838"/>
<source>WLAN Connected Successfully</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="820"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="834"/>
<source>WLAN Disconnected Successfully</source>
<translation type="unfinished"></translation>
</message>
@ -902,19 +931,32 @@
<context>
<name>main</name>
<message>
<location filename="../src/main.cpp" line="96"/>
<location filename="../src/main.cpp" line="97"/>
<source>kylinnm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/main.cpp" line="100"/>
<location filename="../src/main.cpp" line="101"/>
<source>show kylin-nm wifi page</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/main.cpp" line="101"/>
<location filename="../src/main.cpp" line="102"/>
<source>show kylin-nm lan page</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>vpnMainWindow</name>
<message>
<location filename="../src/frontend/vpnmainwindow.cpp" line="171"/>
<source>kylin-vpn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/vpnmainwindow.cpp" line="276"/>
<source>vpn tool</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

Binary file not shown.

View File

@ -41,16 +41,24 @@
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="64"/>
<source>Public(recommended) Your device can not be discovered on the network. In most cases, use this feature when connected to a network at home, work, or a public location.</source>
<translation>() .</translation>
<source>Public(recommended) Devices on the network cannot discover this computer. Generally, it is suitable for networks in public places, such as airports or coffee shops, etc.</source>
<translation> .</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="68"/>
<source>Private Your device can be discovered on the network. Select this if you require file sharing or use applications that communicate over this network. You should know and trust the people and devices on the network.</source>
<translation> .</translation>
<source>Devices on the network can discover this computer. Generally applicable to a network at home or work where you know and trust the individuals and devices on the network.</source>
<translation> .</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="73"/>
<source>Public(recommended) Your device can not be discovered on the network. In most cases, use this feature when connected to a network at home, work, or a public location.</source>
<translation type="vanished">() .</translation>
</message>
<message>
<source>Private Your device can be discovered on the network. Select this if you require file sharing or use applications that communicate over this network. You should know and trust the people and devices on the network.</source>
<translation type="vanished"> .</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="72"/>
<source>Config firewall and security settings</source>
<translation></translation>
</message>
@ -434,21 +442,35 @@
<context>
<name>EnterpriseWlanDialog</name>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="44"/>
<source>Connect Enterprise WLAN</source>
<translation>WLANས </translation>
<translation type="vanished">WLANས </translation>
</message>
<message>
<source>Close</source>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="104"/>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="107"/>
<source>Wi-Fi network requires authentication</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="112"/>
<source>Access to Wi-Fi network &quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="114"/>
<source>&quot; requires a password or encryption key.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="143"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="105"/>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="144"/>
<source>Connect</source>
<translation></translation>
</message>
@ -456,184 +478,209 @@
<context>
<name>FirewallDialog</name>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="389"/>
<source>Allow your computer to be discovered by other computers and devices on this network</source>
<translation>?</translation>
<translation type="vanished">?</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="392"/>
<source>It is recommended that you enable this feature on your home and work networks rather than public networks.</source>
<translation>.</translation>
<translation type="vanished">.</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="395"/>
<source>Yse</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="396"/>
<source>No</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="75"/>
<source>Allow other devices on this network to discover this computer?</source>
<translation>?</translation>
</message>
<message>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="78"/>
<source>It is not recommended to enable this feature on public networks</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="81"/>
<source>Not allowed (recommended)</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="82"/>
<source>Allowed</source>
<translation></translation>
</message>
</context>
<context>
<name>Ipv4Page</name>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="68"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="71"/>
<source>Ipv4Config</source>
<translation>Ipv4ཁུང</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="69"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="72"/>
<source>Address</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="70"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="73"/>
<source>Netmask</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="71"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="74"/>
<source>Default Gateway</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="72"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="75"/>
<source>Prefs DNS</source>
<translation>DNS</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="73"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="76"/>
<source>Alternative DNS</source>
<translation>DNS</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="107"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="116"/>
<source>Auto(DHCP)</source>
<translation>(DHCP)</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="108"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="117"/>
<source>Manual</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="283"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="298"/>
<source>Invalid address</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="292"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="307"/>
<source>Invalid subnet mask</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="311"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="312"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="335"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="336"/>
<source>Required</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="407"/>
<source>Address conflict</source>
<translation></translation>
</message>
</context>
<context>
<name>Ipv6Page</name>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="149"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="152"/>
<source>Ipv6Config</source>
<translation>Ipv6ཁུང</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="150"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="153"/>
<source>Address</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="151"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="154"/>
<source>Subnet prefix Length</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="152"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="155"/>
<source>Default Gateway</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="153"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="156"/>
<source>Prefs DNS</source>
<translation>DNS</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="154"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="157"/>
<source>Alternative DNS</source>
<translation>DNS</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="188"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="197"/>
<source>Auto(DHCP)</source>
<translation>(DHCP)</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="189"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="198"/>
<source>Manual</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="242"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="243"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="244"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="254"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="255"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="256"/>
<source>Required</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="262"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="277"/>
<source>Invalid address</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="271"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="286"/>
<source>Invalid gateway</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="345"/>
<source>Address conflict</source>
<translation></translation>
</message>
</context>
<context>
<name>JoinHiddenWiFiPage</name>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="142"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="131"/>
<source>Please enter the network name and security type</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="146"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="136"/>
<source>Network name(SSID)</source>
<translation> (SID)</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="147"/>
<source>Remember the Network</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="148"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="137"/>
<source>Show Network List</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="149"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="138"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="150"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="139"/>
<source>Join</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="153"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="142"/>
<source>Required</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="158"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="144"/>
<source>Find and Join Wi-Fi</source>
<translation>WI-FIལ</translation>
</message>
@ -666,22 +713,22 @@
<context>
<name>LanPage</name>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1235"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1254"/>
<source>No ethernet device avaliable</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="754"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="768"/>
<source>LAN</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="756"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="770"/>
<source>Activated LAN</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="765"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="779"/>
<source>Inactivated LAN</source>
<translation></translation>
</message>
@ -690,7 +737,7 @@
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1259"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1278"/>
<source>Wired Device not carried</source>
<translation></translation>
</message>
@ -716,7 +763,6 @@
<name>MainWindow</name>
<message>
<location filename="../src/frontend/mainwindow.cpp" line="188"/>
<location filename="../src/frontend/mainwindow.cpp" line="309"/>
<source>kylin-nm</source>
<translation></translation>
</message>
@ -743,36 +789,41 @@
<translatorcomment></translatorcomment>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/mainwindow.cpp" line="309"/>
<source>Network tool</source>
<translation></translation>
</message>
</context>
<context>
<name>NetDetail</name>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="68"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="73"/>
<source>Kylin NM</source>
<translation>NM</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="71"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="76"/>
<source>kylin network desktop message</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="282"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="337"/>
<source>Detail</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="283"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="338"/>
<source>Ipv4</source>
<translation>Ipv4</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="284"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="339"/>
<source>Ipv6</source>
<translation>Ipv6</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="286"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="341"/>
<source>Security</source>
<translation></translation>
</message>
@ -781,90 +832,85 @@
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="288"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="295"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="343"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="350"/>
<source>Config</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="311"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="366"/>
<source>Confirm</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="314"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="369"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="317"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="372"/>
<source>Forget this network</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="348"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="403"/>
<source>Add Lan Connect</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="353"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="408"/>
<source>connect hiddin wlan</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="509"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="521"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1001"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="568"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="580"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1078"/>
<source>None</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="620"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="621"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="622"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="679"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="680"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="681"/>
<source>Auto</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="738"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="814"/>
<source>start check ipv4 address conflict</source>
<translation>ipv4ས</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="755"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="831"/>
<source>start check ipv6 address conflict</source>
<translation>ipv6གནས</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="801"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="852"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="940"/>
<source>ipv4 address conflict!</source>
<translation>ipv4ཐག!</translation>
<translation type="vanished">ipv4ཐག!</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="860"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="948"/>
<source>ipv6 address conflict!</source>
<translation>ipv6ཐག!</translation>
<translation type="vanished">ipv6ཐག!</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="997"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1074"/>
<source>this wifi no support enterprise type</source>
<translation>wifiལ</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1002"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1079"/>
<source>this wifi no support None type</source>
<translation>wifiལ</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1007"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1084"/>
<source>this wifi no support WPA2 type</source>
<translation>wifiལWPA2རིགས</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1010"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1087"/>
<source>this wifi no support WPA3 type</source>
<translation>wifiལWPA3རིགས</translation>
</message>
@ -975,75 +1021,80 @@
<context>
<name>SecurityPage</name>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="175"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="95"/>
<source>Remember the Network</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="203"/>
<source>Security</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="176"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="196"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="204"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="224"/>
<source>Password</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="180"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="208"/>
<source>EAP type</source>
<translation>EAP </translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="182"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="210"/>
<source>Identity</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="183"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="211"/>
<source>Domain</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="184"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="212"/>
<source>CA certficate</source>
<translation>CA certficate</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="185"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="213"/>
<source>no need for CA certificate</source>
<translation>CAཡི</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="186"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="214"/>
<source>User certificate</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="187"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="215"/>
<source>User private key</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="188"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="216"/>
<source>User key password</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="189"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="217"/>
<source>Password options</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="190"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="198"/>
<location filename="../src/frontend/netdetails/securitypage.h" line="103"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="218"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="226"/>
<location filename="../src/frontend/netdetails/securitypage.h" line="109"/>
<source>Required</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="194"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="222"/>
<source>Ineer authentication</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="195"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="223"/>
<source>Usename</source>
<translation></translation>
</message>
@ -1053,91 +1104,91 @@
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="197"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="225"/>
<source>Ask pwd each query</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="201"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="211"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="214"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="217"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="300"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="776"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="797"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="819"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="842"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="229"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="239"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="242"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="245"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="328"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="805"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="826"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="848"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="871"/>
<source>None</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="202"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="230"/>
<source>WPA&amp;WPA2 Personal</source>
<translation>WPA&amp;WPA2མི</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="203"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="231"/>
<source>WPA&amp;WPA2 Enterprise</source>
<translation>WPA&amp;WPA2 </translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="204"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="232"/>
<source>WPA3 Personal</source>
<translation>WPA3མི</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="212"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="215"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="218"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="240"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="243"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="246"/>
<source>Choose from file...</source>
<translation>...</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="221"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="249"/>
<source>Store passwords only for this user</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="221"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="249"/>
<source>Store password only for this user</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="223"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="251"/>
<source>Store passwords for all users</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="223"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="251"/>
<source>Store password for all users</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="225"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="253"/>
<source>Ask this password every time</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="225"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="253"/>
<source>Ask password every time</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="787"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="810"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="832"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="816"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="839"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="861"/>
<source>Choose a CA certificate</source>
<translation>CAཡི</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="788"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="811"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="833"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="817"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="840"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="862"/>
<source>CA Files (*.pem *.der *.p12 *.crt *.cer *.pfx)</source>
<translation>CA (*.pem *.der *.p12 *.crt *.cer *.pfx)</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.h" line="104"/>
<location filename="../src/frontend/netdetails/securitypage.h" line="110"/>
<source> </source>
<translation></translation>
</message>
@ -1155,21 +1206,39 @@
<translation>!</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="119"/>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="120"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="174"/>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="175"/>
<source>Kylin NM</source>
<translation>NM</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="177"/>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="178"/>
<source>kylin network applet desktop message</source>
<translation>kylinདྲ</translation>
</message>
</context>
<context>
<name>VpnPage</name>
<message>
<location filename="../src/frontend/tab-pages/vpnpage.cpp" line="302"/>
<source>Activated VPN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/vpnpage.cpp" line="311"/>
<source>Inactivated VPN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/vpnpage.cpp" line="733"/>
<source>Wired Device not carried</source>
<translation></translation>
</message>
</context>
<context>
<name>WiFiConfigDialog</name>
<message>
@ -1216,31 +1285,31 @@
<context>
<name>WlanListItem</name>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="62"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="65"/>
<source>Not connected</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="155"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="584"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="163"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="614"/>
<source>Disconnect</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="157"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="270"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="582"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="165"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="278"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="612"/>
<source>Connect</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="164"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="589"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="172"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="619"/>
<source>Forget</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="291"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="299"/>
<source>Auto Connect</source>
<translation></translation>
</message>
@ -1260,22 +1329,22 @@
<context>
<name>WlanPage</name>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="104"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="107"/>
<source>WLAN</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="89"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="94"/>
<source>No wireless network card detected</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="106"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="109"/>
<source>Activated WLAN</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="116"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="119"/>
<source>Other WLAN</source>
<translation></translation>
</message>
@ -1284,12 +1353,12 @@
<translation type="vanished">...</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="824"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="838"/>
<source>WLAN Connected Successfully</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="820"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="834"/>
<source>WLAN Disconnected Successfully</source>
<translation></translation>
</message>
@ -1352,19 +1421,32 @@
<context>
<name>main</name>
<message>
<location filename="../src/main.cpp" line="96"/>
<location filename="../src/main.cpp" line="97"/>
<source>kylinnm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/main.cpp" line="100"/>
<location filename="../src/main.cpp" line="101"/>
<source>show kylin-nm wifi page</source>
<translation></translation>
</message>
<message>
<location filename="../src/main.cpp" line="101"/>
<location filename="../src/main.cpp" line="102"/>
<source>show kylin-nm lan page</source>
<translation></translation>
</message>
</context>
<context>
<name>vpnMainWindow</name>
<message>
<location filename="../src/frontend/vpnmainwindow.cpp" line="171"/>
<source>kylin-vpn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/vpnmainwindow.cpp" line="276"/>
<source>vpn tool</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

Binary file not shown.

View File

@ -108,16 +108,16 @@
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="64"/>
<source>Public(recommended) Your device can not be discovered on the network. In most cases, use this feature when connected to a network at home, work, or a public location.</source>
<source>Public(recommended) Devices on the network cannot discover this computer. Generally, it is suitable for networks in public places, such as airports or coffee shops, etc.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="68"/>
<source>Private Your device can be discovered on the network. Select this if you require file sharing or use applications that communicate over this network. You should know and trust the people and devices on the network.</source>
<source>Devices on the network can discover this computer. Generally applicable to a network at home or work where you know and trust the individuals and devices on the network.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="73"/>
<location filename="../src/frontend/netdetails/configpage.cpp" line="72"/>
<source>Config firewall and security settings</source>
<translation type="unfinished"></translation>
</message>
@ -1177,17 +1177,27 @@
<context>
<name>EnterpriseWlanDialog</name>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="44"/>
<source>Connect Enterprise WLAN</source>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="107"/>
<source>Wi-Fi network requires authentication</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="104"/>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="112"/>
<source>Access to Wi-Fi network &quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="114"/>
<source>&quot; requires a password or encryption key.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="143"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="105"/>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="144"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
@ -1195,184 +1205,189 @@
<context>
<name>FirewallDialog</name>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="389"/>
<source>Allow your computer to be discovered by other computers and devices on this network</source>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="75"/>
<source>Allow other devices on this network to discover this computer?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="392"/>
<source>It is recommended that you enable this feature on your home and work networks rather than public networks.</source>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="78"/>
<source>It is not recommended to enable this feature on public networks</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="395"/>
<source>Yse</source>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="81"/>
<source>Not allowed (recommended)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="396"/>
<source>No</source>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="82"/>
<source>Allowed</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Ipv4Page</name>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="68"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="71"/>
<source>Ipv4Config</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="69"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="72"/>
<source>Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="70"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="73"/>
<source>Netmask</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="71"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="74"/>
<source>Default Gateway</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="72"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="75"/>
<source>Prefs DNS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="73"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="76"/>
<source>Alternative DNS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="107"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="116"/>
<source>Auto(DHCP)</source>
<translation type="unfinished">Oto(DHCP)</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="108"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="117"/>
<source>Manual</source>
<translation type="unfinished">Elle</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="283"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="298"/>
<source>Invalid address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="292"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="307"/>
<source>Invalid subnet mask</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="311"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="312"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="335"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="336"/>
<source>Required</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="407"/>
<source>Address conflict</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Ipv6Page</name>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="149"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="152"/>
<source>Ipv6Config</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="150"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="153"/>
<source>Address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="151"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="154"/>
<source>Subnet prefix Length</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="152"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="155"/>
<source>Default Gateway</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="153"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="156"/>
<source>Prefs DNS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="154"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="157"/>
<source>Alternative DNS</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="188"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="197"/>
<source>Auto(DHCP)</source>
<translation type="unfinished">Oto(DHCP)</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="189"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="198"/>
<source>Manual</source>
<translation type="unfinished">Elle</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="242"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="243"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="244"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="254"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="255"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="256"/>
<source>Required</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="262"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="277"/>
<source>Invalid address</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="271"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="286"/>
<source>Invalid gateway</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="345"/>
<source>Address conflict</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>JoinHiddenWiFiPage</name>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="142"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="131"/>
<source>Please enter the network name and security type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="146"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="136"/>
<source>Network name(SSID)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="147"/>
<source>Remember the Network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="148"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="137"/>
<source>Show Network List</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="149"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="138"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="150"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="139"/>
<source>Join</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="153"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="142"/>
<source>Required</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="158"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="144"/>
<source>Find and Join Wi-Fi</source>
<translation type="unfinished"></translation>
</message>
@ -1412,27 +1427,27 @@
<context>
<name>LanPage</name>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1235"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1254"/>
<source>No ethernet device avaliable</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="754"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="768"/>
<source>LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="756"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="770"/>
<source>Activated LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="765"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="779"/>
<source>Inactivated LAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1259"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1278"/>
<source>Wired Device not carried</source>
<translation type="unfinished"></translation>
</message>
@ -1454,7 +1469,6 @@
<name>MainWindow</name>
<message>
<location filename="../src/frontend/mainwindow.cpp" line="188"/>
<location filename="../src/frontend/mainwindow.cpp" line="309"/>
<source>kylin-nm</source>
<translation></translation>
</message>
@ -1489,6 +1503,11 @@
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/mainwindow.cpp" line="309"/>
<source>Network tool</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Enabled</source>
<translation type="vanished">Aktif</translation>
@ -1598,120 +1617,107 @@
<context>
<name>NetDetail</name>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="68"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="73"/>
<source>Kylin NM</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="71"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="76"/>
<source>kylin network desktop message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="282"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="337"/>
<source>Detail</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="283"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="338"/>
<source>Ipv4</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="284"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="339"/>
<source>Ipv6</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="286"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="341"/>
<source>Security</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="288"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="295"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="343"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="350"/>
<source>Config</source>
<translation type="unfinished">Ayar</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="311"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="366"/>
<source>Confirm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="314"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="369"/>
<source>Cancel</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="317"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="372"/>
<source>Forget this network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="348"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="403"/>
<source>Add Lan Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="353"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="408"/>
<source>connect hiddin wlan</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="509"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="521"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1001"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="568"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="580"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1078"/>
<source>None</source>
<translation type="unfinished">Yok</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="620"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="621"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="622"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="679"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="680"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="681"/>
<source>Auto</source>
<translation type="unfinished">Oto</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="738"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="814"/>
<source>start check ipv4 address conflict</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="755"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="831"/>
<source>start check ipv6 address conflict</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="801"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="852"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="940"/>
<source>ipv4 address conflict!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="860"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="948"/>
<source>ipv6 address conflict!</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="997"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1074"/>
<source>this wifi no support enterprise type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1002"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1079"/>
<source>this wifi no support None type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1007"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1084"/>
<source>this wifi no support WPA2 type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1010"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1087"/>
<source>this wifi no support WPA3 type</source>
<translation type="unfinished"></translation>
</message>
@ -1933,164 +1939,169 @@
<context>
<name>SecurityPage</name>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="175"/>
<source>Security</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="176"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="196"/>
<source>Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="180"/>
<source>EAP type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="182"/>
<source>Identity</source>
<translation type="unfinished">Kimlik:</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="183"/>
<source>Domain</source>
<translation type="unfinished">Domain:</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="184"/>
<source>CA certficate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="185"/>
<source>no need for CA certificate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="186"/>
<source>User certificate</source>
<translation type="unfinished">Kullanıcı sertifikası:</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="187"/>
<source>User private key</source>
<translation type="unfinished">Kullanıcı özel anahtarı:</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="188"/>
<source>User key password</source>
<translation type="unfinished">Kullanıcı anahtarı şifresi:</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="189"/>
<source>Password options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="190"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="198"/>
<location filename="../src/frontend/netdetails/securitypage.h" line="103"/>
<source>Required</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="194"/>
<source>Ineer authentication</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="195"/>
<source>Usename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="197"/>
<source>Ask pwd each query</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="201"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="211"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="214"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="217"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="300"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="776"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="797"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="819"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="842"/>
<source>None</source>
<translation type="unfinished">Yok</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="202"/>
<source>WPA&amp;WPA2 Personal</source>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="95"/>
<source>Remember the Network</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="203"/>
<source>WPA&amp;WPA2 Enterprise</source>
<source>Security</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="204"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="224"/>
<source>Password</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="208"/>
<source>EAP type</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="210"/>
<source>Identity</source>
<translation type="unfinished">Kimlik:</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="211"/>
<source>Domain</source>
<translation type="unfinished">Domain:</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="212"/>
<source>CA certficate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="213"/>
<source>no need for CA certificate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="214"/>
<source>User certificate</source>
<translation type="unfinished">Kullanıcı sertifikası:</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="215"/>
<source>User private key</source>
<translation type="unfinished">Kullanıcı özel anahtarı:</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="216"/>
<source>User key password</source>
<translation type="unfinished">Kullanıcı anahtarı şifresi:</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="217"/>
<source>Password options</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="218"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="226"/>
<location filename="../src/frontend/netdetails/securitypage.h" line="109"/>
<source>Required</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="222"/>
<source>Ineer authentication</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="223"/>
<source>Usename</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="225"/>
<source>Ask pwd each query</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="229"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="239"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="242"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="245"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="328"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="805"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="826"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="848"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="871"/>
<source>None</source>
<translation type="unfinished">Yok</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="230"/>
<source>WPA&amp;WPA2 Personal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="231"/>
<source>WPA&amp;WPA2 Enterprise</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="232"/>
<source>WPA3 Personal</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="212"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="215"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="218"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="240"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="243"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="246"/>
<source>Choose from file...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="221"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="249"/>
<source>Store passwords only for this user</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="221"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="249"/>
<source>Store password only for this user</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="223"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="251"/>
<source>Store passwords for all users</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="223"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="251"/>
<source>Store password for all users</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="225"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="253"/>
<source>Ask this password every time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="225"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="253"/>
<source>Ask password every time</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="787"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="810"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="832"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="816"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="839"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="861"/>
<source>Choose a CA certificate</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="788"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="811"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="833"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="817"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="840"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="862"/>
<source>CA Files (*.pem *.der *.p12 *.crt *.cer *.pfx)</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.h" line="104"/>
<location filename="../src/frontend/netdetails/securitypage.h" line="110"/>
<source> </source>
<translation type="unfinished"></translation>
</message>
@ -2108,17 +2119,17 @@
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="119"/>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="120"/>
<source>Settings</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="174"/>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="175"/>
<source>Kylin NM</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="177"/>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="178"/>
<source>kylin network applet desktop message</source>
<translation type="unfinished">Kylin uygulaması masaüstü mesajı</translation>
</message>
@ -2130,6 +2141,24 @@
<translation type="obsolete">Kylin uygulaması masaüstü mesajı</translation>
</message>
</context>
<context>
<name>VpnPage</name>
<message>
<location filename="../src/frontend/tab-pages/vpnpage.cpp" line="302"/>
<source>Activated VPN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/vpnpage.cpp" line="311"/>
<source>Inactivated VPN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/vpnpage.cpp" line="733"/>
<source>Wired Device not carried</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>WiFiConfigDialog</name>
<message>
@ -2176,31 +2205,31 @@
<context>
<name>WlanListItem</name>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="62"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="65"/>
<source>Not connected</source>
<translation type="unfinished">Bağlanamadı</translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="155"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="584"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="163"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="614"/>
<source>Disconnect</source>
<translation type="unfinished">Bağlantıyı Kes</translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="157"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="270"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="582"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="165"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="278"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="612"/>
<source>Connect</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="164"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="589"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="172"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="619"/>
<source>Forget</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="291"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="299"/>
<source>Auto Connect</source>
<translation type="unfinished"></translation>
</message>
@ -2216,32 +2245,32 @@
<context>
<name>WlanPage</name>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="104"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="107"/>
<source>WLAN</source>
<translation type="unfinished">WLAN</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="106"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="109"/>
<source>Activated WLAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="116"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="119"/>
<source>Other WLAN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="89"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="94"/>
<source>No wireless network card detected</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="824"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="838"/>
<source>WLAN Connected Successfully</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="820"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="834"/>
<source>WLAN Disconnected Successfully</source>
<translation type="unfinished"></translation>
</message>
@ -2264,19 +2293,32 @@
<context>
<name>main</name>
<message>
<location filename="../src/main.cpp" line="96"/>
<location filename="../src/main.cpp" line="97"/>
<source>kylinnm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/main.cpp" line="100"/>
<location filename="../src/main.cpp" line="101"/>
<source>show kylin-nm wifi page</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/main.cpp" line="101"/>
<location filename="../src/main.cpp" line="102"/>
<source>show kylin-nm lan page</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>vpnMainWindow</name>
<message>
<location filename="../src/frontend/vpnmainwindow.cpp" line="171"/>
<source>kylin-vpn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/vpnmainwindow.cpp" line="276"/>
<source>vpn tool</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>

Binary file not shown.

View File

@ -41,16 +41,24 @@
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="64"/>
<source>Public(recommended) Your device can not be discovered on the network. In most cases, use this feature when connected to a network at home, work, or a public location.</source>
<translation>使</translation>
<source>Public(recommended) Devices on the network cannot discover this computer. Generally, it is suitable for networks in public places, such as airports or coffee shops, etc.</source>
<translation> </translation>
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="68"/>
<source>Private Your device can be discovered on the network. Select this if you require file sharing or use applications that communicate over this network. You should know and trust the people and devices on the network.</source>
<translation> 使</translation>
<source>Devices on the network can discover this computer. Generally applicable to a network at home or work where you know and trust the individuals and devices on the network.</source>
<translation> </translation>
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="73"/>
<source>Public(recommended) Your device can not be discovered on the network. In most cases, use this feature when connected to a network at home, work, or a public location.</source>
<translation type="vanished">使</translation>
</message>
<message>
<source>Private Your device can be discovered on the network. Select this if you require file sharing or use applications that communicate over this network. You should know and trust the people and devices on the network.</source>
<translation type="vanished"> 使</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/configpage.cpp" line="72"/>
<source>Config firewall and security settings</source>
<translation></translation>
</message>
@ -434,21 +442,35 @@
<context>
<name>EnterpriseWlanDialog</name>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="44"/>
<source>Connect Enterprise WLAN</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<source>Close</source>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="104"/>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="107"/>
<source>Wi-Fi network requires authentication</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="112"/>
<source>Access to Wi-Fi network &quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="114"/>
<source>&quot; requires a password or encryption key.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="143"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="105"/>
<location filename="../src/frontend/enterprise-wlan/enterprisewlandialog.cpp" line="144"/>
<source>Connect</source>
<translation></translation>
</message>
@ -456,184 +478,209 @@
<context>
<name>FirewallDialog</name>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="389"/>
<source>Allow your computer to be discovered by other computers and devices on this network</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="392"/>
<source>It is recommended that you enable this feature on your home and work networks rather than public networks.</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="395"/>
<source>Yse</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="396"/>
<source>No</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="75"/>
<source>Allow other devices on this network to discover this computer?</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="78"/>
<source>It is not recommended to enable this feature on public networks</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="81"/>
<source>Not allowed (recommended)</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/networkmode/firewalldialog.cpp" line="82"/>
<source>Allowed</source>
<translation></translation>
</message>
</context>
<context>
<name>Ipv4Page</name>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="68"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="71"/>
<source>Ipv4Config</source>
<translation>Ipv4配置</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="69"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="72"/>
<source>Address</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="70"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="73"/>
<source>Netmask</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="71"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="74"/>
<source>Default Gateway</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="72"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="75"/>
<source>Prefs DNS</source>
<translation>DNS</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="73"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="76"/>
<source>Alternative DNS</source>
<translation>DNS</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="107"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="116"/>
<source>Auto(DHCP)</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="108"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="117"/>
<source>Manual</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="283"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="298"/>
<source>Invalid address</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="292"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="307"/>
<source>Invalid subnet mask</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="311"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="312"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="335"/>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="336"/>
<source>Required</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv4page.cpp" line="407"/>
<source>Address conflict</source>
<translation></translation>
</message>
</context>
<context>
<name>Ipv6Page</name>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="149"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="152"/>
<source>Ipv6Config</source>
<translation>Ipv6配置</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="150"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="153"/>
<source>Address</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="151"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="154"/>
<source>Subnet prefix Length</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="152"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="155"/>
<source>Default Gateway</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="153"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="156"/>
<source>Prefs DNS</source>
<translation>DNS</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="154"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="157"/>
<source>Alternative DNS</source>
<translation>DNS</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="188"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="197"/>
<source>Auto(DHCP)</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="189"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="198"/>
<source>Manual</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="242"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="243"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="244"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="254"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="255"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="256"/>
<source>Required</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="262"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="277"/>
<source>Invalid address</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="271"/>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="286"/>
<source>Invalid gateway</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/ipv6page.cpp" line="345"/>
<source>Address conflict</source>
<translation></translation>
</message>
</context>
<context>
<name>JoinHiddenWiFiPage</name>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="142"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="131"/>
<source>Please enter the network name and security type</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="146"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="136"/>
<source>Network name(SSID)</source>
<translation>(SSID)</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="147"/>
<source>Remember the Network</source>
<translation></translation>
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="148"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="137"/>
<source>Show Network List</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="149"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="138"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="150"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="139"/>
<source>Join</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="153"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="142"/>
<source>Required</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="158"/>
<location filename="../src/frontend/netdetails/joinhiddenwifipage.cpp" line="144"/>
<source>Find and Join Wi-Fi</source>
<translation>Wi-Fi</translation>
</message>
@ -666,22 +713,22 @@
<context>
<name>LanPage</name>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1235"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1254"/>
<source>No ethernet device avaliable</source>
<translation>线</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="754"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="768"/>
<source>LAN</source>
<translation>线</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="756"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="770"/>
<source>Activated LAN</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="765"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="779"/>
<source>Inactivated LAN</source>
<translation></translation>
</message>
@ -690,7 +737,7 @@
<translation type="vanished">线</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1259"/>
<location filename="../src/frontend/tab-pages/lanpage.cpp" line="1278"/>
<source>Wired Device not carried</source>
<translation>线</translation>
</message>
@ -716,7 +763,6 @@
<name>MainWindow</name>
<message>
<location filename="../src/frontend/mainwindow.cpp" line="188"/>
<location filename="../src/frontend/mainwindow.cpp" line="309"/>
<source>kylin-nm</source>
<translation></translation>
</message>
@ -743,36 +789,41 @@
<translatorcomment></translatorcomment>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/mainwindow.cpp" line="309"/>
<source>Network tool</source>
<translation></translation>
</message>
</context>
<context>
<name>NetDetail</name>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="68"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="73"/>
<source>Kylin NM</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="71"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="76"/>
<source>kylin network desktop message</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="282"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="337"/>
<source>Detail</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="283"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="338"/>
<source>Ipv4</source>
<translation>Ipv4</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="284"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="339"/>
<source>Ipv6</source>
<translation>Ipv6</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="286"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="341"/>
<source>Security</source>
<translation></translation>
</message>
@ -781,90 +832,85 @@
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="288"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="295"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="343"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="350"/>
<source>Config</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="311"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="366"/>
<source>Confirm</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="314"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="369"/>
<source>Cancel</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="317"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="372"/>
<source>Forget this network</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="348"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="403"/>
<source>Add Lan Connect</source>
<translation>线</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="353"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="408"/>
<source>connect hiddin wlan</source>
<translation>WLAN</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="509"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="521"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1001"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="568"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="580"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1078"/>
<source>None</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="620"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="621"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="622"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="679"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="680"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="681"/>
<source>Auto</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="738"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="814"/>
<source>start check ipv4 address conflict</source>
<translation>ipv4地址冲突</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="755"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="831"/>
<source>start check ipv6 address conflict</source>
<translation>ipv6地址冲突</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="801"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="852"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="940"/>
<source>ipv4 address conflict!</source>
<translation>ipv4地址冲突</translation>
<translation type="vanished">ipv4地址冲突</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="860"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="948"/>
<source>ipv6 address conflict!</source>
<translation>ipv6地址冲突</translation>
<translation type="vanished">ipv6地址冲突</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="997"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1074"/>
<source>this wifi no support enterprise type</source>
<translation>wifi不支持企业网类型</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1002"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1079"/>
<source>this wifi no support None type</source>
<translation>wifi不支持空类型</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1007"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1084"/>
<source>this wifi no support WPA2 type</source>
<translation>wifi不支持WPA2类型</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1010"/>
<location filename="../src/frontend/netdetails/netdetail.cpp" line="1087"/>
<source>this wifi no support WPA3 type</source>
<translation>wifi不支持WPA3类型</translation>
</message>
@ -975,75 +1021,80 @@
<context>
<name>SecurityPage</name>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="175"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="95"/>
<source>Remember the Network</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="203"/>
<source>Security</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="176"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="196"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="204"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="224"/>
<source>Password</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="180"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="208"/>
<source>EAP type</source>
<translation>EAP方法</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="182"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="210"/>
<source>Identity</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="183"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="211"/>
<source>Domain</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="184"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="212"/>
<source>CA certficate</source>
<translation>CA </translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="185"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="213"/>
<source>no need for CA certificate</source>
<translation>CA证书</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="186"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="214"/>
<source>User certificate</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="187"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="215"/>
<source>User private key</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="188"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="216"/>
<source>User key password</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="189"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="217"/>
<source>Password options</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="190"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="198"/>
<location filename="../src/frontend/netdetails/securitypage.h" line="103"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="218"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="226"/>
<location filename="../src/frontend/netdetails/securitypage.h" line="109"/>
<source>Required</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="194"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="222"/>
<source>Ineer authentication</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="195"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="223"/>
<source>Usename</source>
<translation></translation>
</message>
@ -1053,91 +1104,91 @@
<translation type="vanished"></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="197"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="225"/>
<source>Ask pwd each query</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="201"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="211"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="214"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="217"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="300"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="776"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="797"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="819"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="842"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="229"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="239"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="242"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="245"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="328"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="805"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="826"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="848"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="871"/>
<source>None</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="202"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="230"/>
<source>WPA&amp;WPA2 Personal</source>
<translation>WPA&amp;WPA2 </translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="203"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="231"/>
<source>WPA&amp;WPA2 Enterprise</source>
<translation>WPA&amp;WPA2 </translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="204"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="232"/>
<source>WPA3 Personal</source>
<translation>WPA3 </translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="212"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="215"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="218"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="240"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="243"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="246"/>
<source>Choose from file...</source>
<translation>...</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="221"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="249"/>
<source>Store passwords only for this user</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="221"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="249"/>
<source>Store password only for this user</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="223"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="251"/>
<source>Store passwords for all users</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="223"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="251"/>
<source>Store password for all users</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="225"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="253"/>
<source>Ask this password every time</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="225"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="253"/>
<source>Ask password every time</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="787"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="810"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="832"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="816"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="839"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="861"/>
<source>Choose a CA certificate</source>
<translation>CA证书</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="788"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="811"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="833"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="817"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="840"/>
<location filename="../src/frontend/netdetails/securitypage.cpp" line="862"/>
<source>CA Files (*.pem *.der *.p12 *.crt *.cer *.pfx)</source>
<translation>CA (*.pem *.der *.p12 *.crt *.cer *.pfx)</translation>
</message>
<message>
<location filename="../src/frontend/netdetails/securitypage.h" line="104"/>
<location filename="../src/frontend/netdetails/securitypage.h" line="110"/>
<source> </source>
<translation></translation>
</message>
@ -1155,21 +1206,39 @@
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="119"/>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="120"/>
<source>Settings</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="174"/>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="175"/>
<source>Kylin NM</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="177"/>
<location filename="../src/frontend/tab-pages/tabpage.cpp" line="178"/>
<source>kylin network applet desktop message</source>
<translation></translation>
</message>
</context>
<context>
<name>VpnPage</name>
<message>
<location filename="../src/frontend/tab-pages/vpnpage.cpp" line="302"/>
<source>Activated VPN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/vpnpage.cpp" line="311"/>
<source>Inactivated VPN</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/vpnpage.cpp" line="733"/>
<source>Wired Device not carried</source>
<translation type="unfinished">线</translation>
</message>
</context>
<context>
<name>WiFiConfigDialog</name>
<message>
@ -1216,31 +1285,31 @@
<context>
<name>WlanListItem</name>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="62"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="65"/>
<source>Not connected</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="155"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="584"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="163"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="614"/>
<source>Disconnect</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="157"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="270"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="582"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="165"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="278"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="612"/>
<source>Connect</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="164"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="589"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="172"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="619"/>
<source>Forget</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="291"/>
<location filename="../src/frontend/list-items/wlanlistitem.cpp" line="299"/>
<source>Auto Connect</source>
<translation></translation>
</message>
@ -1260,22 +1329,22 @@
<context>
<name>WlanPage</name>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="104"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="107"/>
<source>WLAN</source>
<translation>线</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="89"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="94"/>
<source>No wireless network card detected</source>
<translation>线</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="106"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="109"/>
<source>Activated WLAN</source>
<translation></translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="116"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="119"/>
<source>Other WLAN</source>
<translation></translation>
</message>
@ -1284,12 +1353,12 @@
<translation type="vanished">...</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="824"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="838"/>
<source>WLAN Connected Successfully</source>
<translation>线</translation>
</message>
<message>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="820"/>
<location filename="../src/frontend/tab-pages/wlanpage.cpp" line="834"/>
<source>WLAN Disconnected Successfully</source>
<translation>线</translation>
</message>
@ -1352,19 +1421,32 @@
<context>
<name>main</name>
<message>
<location filename="../src/main.cpp" line="96"/>
<location filename="../src/main.cpp" line="97"/>
<source>kylinnm</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/main.cpp" line="100"/>
<location filename="../src/main.cpp" line="101"/>
<source>show kylin-nm wifi page</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/main.cpp" line="101"/>
<location filename="../src/main.cpp" line="102"/>
<source>show kylin-nm lan page</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>vpnMainWindow</name>
<message>
<location filename="../src/frontend/vpnmainwindow.cpp" line="171"/>
<source>kylin-vpn</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../src/frontend/vpnmainwindow.cpp" line="276"/>
<source>vpn tool</source>
<translation type="unfinished"></translation>
</message>
</context>
</TS>