kiran-control-panel/0002-fix-network-fix-crash-and-wireless-network-disable-f.patch

1541 lines
68 KiB
Diff
Raw Normal View History

From 48a78fb158d5f87d123ab8ff0a6358d71aa1eec2 Mon Sep 17 00:00:00 2001
From: luoqing <luoqing@kylinsec.com.cn>
Date: Fri, 19 Aug 2022 09:20:18 +0800
Subject: [PATCH 2/7] fix(network):fix crash and wireless network disable
function defects
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 修复网络页面与其他插件页面快速切换导致崩溃的问题
修复无线网络禁用的缺陷
---
plugins/network/src/connection-show-page.cpp | 60 +++--
plugins/network/src/connection-show-page.h | 4 +-
.../src/plugin/cpanel-network-widget.cpp | 150 +++++++-----
.../src/plugin/cpanel-network-widget.h | 11 +-
plugins/network/src/plugin/details-page.cpp | 5 +-
.../src/plugin/manager/vpn-manager.cpp | 134 +++++------
.../src/plugin/manager/wired-manager.cpp | 11 +-
.../src/plugin/manager/wireless-manager.cpp | 58 +++--
.../src/plugin/setting-widget/vpn/vpn-ppp.cpp | 6 +-
plugins/network/src/tray/network-tray.cpp | 218 ++++++++++--------
plugins/network/src/tray/network-tray.h | 2 +-
plugins/network/src/tray/tray-page.cpp | 17 +-
.../network/src/tray/wireless-tray-widget.cpp | 35 ++-
13 files changed, 392 insertions(+), 319 deletions(-)
diff --git a/plugins/network/src/connection-show-page.cpp b/plugins/network/src/connection-show-page.cpp
index 71ae95c..ae50b06 100644
--- a/plugins/network/src/connection-show-page.cpp
+++ b/plugins/network/src/connection-show-page.cpp
@@ -27,13 +27,10 @@ using namespace NetworkManager;
ConnectionShowPage::ConnectionShowPage(QWidget* parent) : QWidget(parent), ui(new Ui::ConnectionShowPage)
{
ui->setupUi(this);
- initUI();
- initConnect();
}
ConnectionShowPage::~ConnectionShowPage()
{
- KLOG_DEBUG() << "ConnectionShowPage::~ConnectionShowPage()";
delete ui;
}
@@ -42,14 +39,36 @@ void ConnectionShowPage::setTitle(QString title)
ui->title->setText(title);
}
+void ConnectionShowPage::init(NetworkManager::ConnectionSettings::ConnectionType connectionType, const QString& devicePath)
+{
+ m_connectionType = connectionType;
+ m_devicePath = devicePath;
+ ui->connectionLists->setDevicePath(devicePath);
+ ui->connectionLists->setItemWidgetType(ITEM_WIDGET_TYPE_PLUGIN);
+
+ initUI();
+ initConnect();
+}
+
+// TODO:增加判断设备是否可用的逻辑,unmanager 和 unavalibale的处理
void ConnectionShowPage::initUI()
{
+ // switchButton Checked 默认为false
m_switchButton = new KiranSwitchButton(this);
+ initSwitchButton();
ui->titleLayout->addWidget(m_switchButton);
ui->connectionLists->setMaximumHeight(ui->connectionLists->sizeHintForRow(0) * ui->connectionLists->count() + (2 * ui->connectionLists->frameWidth()));
Kiran::StylePropertyHelper::setButtonType(ui->createConnectionButton, Kiran::BUTTON_Default);
ui->createConnectionButton->setIcon(QIcon(":/kcp-network-images/connection-add.svg"));
+
+ if (m_connectionType == ConnectionSettings::Wireless)
+ {
+ ui->connectionLists->showWirelessNetworkLists();
+ ui->connectionLists->setVisible(isWirelessEnabled());
+ }
+ else
+ ui->connectionLists->showConnectionLists(m_connectionType);
}
void ConnectionShowPage::initConnect()
@@ -66,31 +85,35 @@ void ConnectionShowPage::initConnect()
connect(ui->connectionLists, &ConnectionLists::sendSsidToWireless, this, &ConnectionShowPage::sendSsidToWireless);
- connect(m_switchButton, &KiranSwitchButton::toggled, this, &ConnectionShowPage::handleToggledSwitchButton);
+ connect(m_switchButton, &KiranSwitchButton::toggled, this, &ConnectionShowPage::handleToggledSwitchButton, Qt::UniqueConnection);
/**
*如果频繁的打开/禁用网络,会频繁发送信号,使用定时器进行处理
* */
- m_timer.setInterval(100);
- m_timer.setSingleShot(true);
- connect(notifier(), &Notifier::wirelessEnabledChanged, [=](bool enable)
- {
- m_wirlessNetworkEnable = enable;
- m_timer.start(); });
+ // m_timer.setInterval(200);
+ // m_timer.setSingleShot(true);
+ // connect(notifier(), &Notifier::wirelessEnabledChanged, this, [this](bool enable)
+ // {
+ // m_wirlessNetworkEnable = enable;
+ // m_timer.start(); });
+
+ // connect(&m_timer, &QTimer::timeout, this, [this]()
+ // { handleWirelessEnabledChanged(m_wirlessNetworkEnable); });
- connect(&m_timer, &QTimer::timeout, [=]()
- { handleWirelessEnabledChanged(m_wirlessNetworkEnable); });
+ if (m_connectionType == ConnectionSettings::Wireless)
+ {
+ connect(notifier(), &Notifier::wirelessEnabledChanged, this, &ConnectionShowPage::handleWirelessEnabledChanged, Qt::UniqueConnection);
+ }
- // connect(notifier(), &Notifier::wirelessEnabledChanged, this, &ConnectionShowPage::handleWirelessEnabledChanged);
connect(notifier(), &Notifier::networkingEnabledChanged, [=]() {});
}
+//弃用
void ConnectionShowPage::setConnectionType(ConnectionSettings::ConnectionType connectionType)
{
m_connectionType = connectionType;
}
-// XXX:该函数有待修改
void ConnectionShowPage::initSwitchButton()
{
switch (m_connectionType)
@@ -109,6 +132,7 @@ void ConnectionShowPage::initSwitchButton()
void ConnectionShowPage::handleToggledSwitchButton(bool toggled)
{
+ KLOG_DEBUG() << "--------------------------------handleToggledSwitchButton:" << toggled;
switch (m_connectionType)
{
case ConnectionSettings::Wired:
@@ -125,14 +149,17 @@ void ConnectionShowPage::handleToggledSwitchButton(bool toggled)
}
}
-//TODO:控制无线网络设备开关
void ConnectionShowPage::handleWirelessEnabledChanged(bool enabled)
{
+ KLOG_DEBUG() << "*****************************handleWirelessEnabledChanged:" << enabled;
+ //处理通过命令行等其他方式禁用无线网络的情况
+ m_switchButton->blockSignals(true);
m_switchButton->setChecked(enabled);
+ m_switchButton->blockSignals(false);
ui->connectionLists->setVisible(enabled);
- // ui->createConnectionButton->setVisible(enabled);
}
+//弃用
void ConnectionShowPage::setDevicePath(const QString& devicePath)
{
m_devicePath = devicePath;
@@ -209,6 +236,7 @@ void ConnectionShowPage::updateItemActivatedStatus(const QString& activatedPath)
ui->connectionLists->updateItemActivatedStatus(activatedPath);
}
+//弃用
void ConnectionShowPage::setItemWidgetType(ItemWidgetType itemType)
{
ui->connectionLists->setItemWidgetType(itemType);
diff --git a/plugins/network/src/connection-show-page.h b/plugins/network/src/connection-show-page.h
index 9b618c2..308e5dc 100644
--- a/plugins/network/src/connection-show-page.h
+++ b/plugins/network/src/connection-show-page.h
@@ -19,8 +19,8 @@
#include <NetworkManagerQt/Manager>
#include <NetworkManagerQt/WirelessNetwork>
#include <QListWidgetItem>
-#include <QWidget>
#include <QTimer>
+#include <QWidget>
QT_BEGIN_NAMESPACE
namespace Ui
@@ -39,6 +39,8 @@ class ConnectionShowPage : public QWidget
public:
explicit ConnectionShowPage(QWidget *parent = nullptr);
~ConnectionShowPage() override;
+
+ void init(NetworkManager::ConnectionSettings::ConnectionType connectionType, const QString &devicePath);
void initUI();
void initConnect();
diff --git a/plugins/network/src/plugin/cpanel-network-widget.cpp b/plugins/network/src/plugin/cpanel-network-widget.cpp
index daf3c33..cb0ec10 100644
--- a/plugins/network/src/plugin/cpanel-network-widget.cpp
+++ b/plugins/network/src/plugin/cpanel-network-widget.cpp
@@ -13,6 +13,7 @@
*/
#include "cpanel-network-widget.h"
+#include <kiran-sidebar-item.h>
#include <qt5-log-i.h>
#include "plugin/details-page.h"
#include "ui_cpanel-network-widget.h"
@@ -48,52 +49,63 @@ void CPanelNetworkWidget::init()
initConnect();
}
-//TODO:增加sidebarItem与设备的对应关系
+// TODO:增加sidebarItem与设备的对应关系
void CPanelNetworkWidget::initPage()
{
getAvailableDeviceList();
int row = 0;
for (int i = 0; i < m_wiredDeviceList.count(); ++i)
{
- auto device = m_wiredDeviceList.value(i);
+ Device::Ptr device = m_wiredDeviceList.value(i);
+ connect(device.data(), &Device::managedChanged, this, &CPanelNetworkWidget::handleManagedChanged, Qt::UniqueConnection);
+
QString devicePath = device->uni();
QString deviceName = device->interfaceName();
WiredManager *wiredManager = new WiredManager(devicePath, this);
- ui->stackedWidget->insertWidget(row,wiredManager);
+ ui->stackedWidget->insertWidget(row, wiredManager);
QString subItemName = tr("Wired Network %1");
QString subItemNameStr = subItemName.arg(i + 1);
- if(m_wiredDeviceList.count() == 1)
- ui->sidebar->insertItem(row, tr("Wired Network"));
+
+ KiranSidebarItem *sidebarItem = new KiranSidebarItem();
+ if (m_wiredDeviceList.count() == 1)
+ sidebarItem->setText(tr("Wired Network"));
else
- ui->sidebar->insertItem(row, subItemNameStr);
- ui->sidebar->item(row)->setData(Qt::UserRole, row);
- ui->sidebar->item(row)->setIcon(trayIconColorSwitch(":/kcp-network-images/wired.svg"));
+ sidebarItem->setText(subItemNameStr);
+
+ ui->sidebar->insertItem(row, sidebarItem);
+ sidebarItem->setData(Qt::UserRole, row);
+ sidebarItem->setIcon(trayIconColorSwitch(":/kcp-network-images/wired.svg"));
row++;
}
for (int i = 0; i < m_wirelessDeviceList.count(); ++i)
{
- auto device = m_wirelessDeviceList.value(i);
+ Device::Ptr device = m_wirelessDeviceList.value(i);
+ connect(device.data(), &Device::managedChanged, this, &CPanelNetworkWidget::handleManagedChanged, Qt::UniqueConnection);
+
QString devicePath = device->uni();
QString deviceName = device->interfaceName();
WirelessManager *wirelessManager = new WirelessManager(devicePath, this);
- ui->stackedWidget->insertWidget(row,wirelessManager);
+ ui->stackedWidget->insertWidget(row, wirelessManager);
QString subItemName = tr("Wireless Network %1");
- QString subItemNameStr = subItemName.arg(i+1);
- if(m_wirelessDeviceList.count() == 1)
- ui->sidebar->insertItem(row, tr("Wireless Network"));
+ QString subItemNameStr = subItemName.arg(i + 1);
+
+ KiranSidebarItem *sidebarItem = new KiranSidebarItem();
+ if (m_wirelessDeviceList.count() == 1)
+ sidebarItem->setText(tr("Wireless Network"));
else
- ui->sidebar->insertItem(row, subItemNameStr);
+ sidebarItem->setText(subItemNameStr);
- ui->sidebar->item(row)->setData(Qt::UserRole, row);
- ui->sidebar->item(row)->setIcon(trayIconColorSwitch(":/kcp-network-images/wireless.svg"));
+ ui->sidebar->insertItem(row, sidebarItem);
+ sidebarItem->setData(Qt::UserRole, row);
+ sidebarItem->setIcon(trayIconColorSwitch(":/kcp-network-images/wireless.svg"));
row++;
}
VpnManager *vpnManager = new VpnManager(this);
- ui->stackedWidget->insertWidget(row,vpnManager);
+ ui->stackedWidget->insertWidget(row, vpnManager);
ui->sidebar->insertItem(row, tr("VPN"));
ui->sidebar->item(row)->setData(Qt::UserRole, row);
@@ -101,7 +113,7 @@ void CPanelNetworkWidget::initPage()
row++;
DetailsPage *networkDetails = new DetailsPage(this);
- ui->stackedWidget->insertWidget(row,networkDetails);
+ ui->stackedWidget->insertWidget(row, networkDetails);
ui->sidebar->insertItem(row, tr("Network Details"));
ui->sidebar->item(row)->setData(Qt::UserRole, row);
ui->sidebar->item(row)->setIcon(trayIconColorSwitch(":/kcp-network-images/network-details.svg"));
@@ -115,7 +127,7 @@ void CPanelNetworkWidget::getAvailableDeviceList()
const Device::List deviceList = networkInterfaces();
for (Device::Ptr dev : deviceList)
{
- if (dev->state() == Device::Unavailable)
+ if (dev->state() == Device::Unmanaged)
continue;
switch (dev->type())
@@ -174,71 +186,89 @@ void CPanelNetworkWidget::initConnect()
{
m_Timer.setInterval(500);
m_Timer.setSingleShot(true);
- waitCounts = 1;
- connect(&m_Timer, &QTimer::timeout, [=]()
+ m_waitCounts = 1;
+ // Note:新设备插入后需要等待一段时间Device::List networkInterfaces() 来不及更新
+ // Note:DeviceAdded signal is emitted when a new network interface is available.
+
+ // XXX:当发出deviceAdded信号时应该已经managed需要修改并重新测试
+ connect(notifier(), &Notifier::deviceAdded, this, [this](const QString &uni)
{
+ m_addDevicePath = uni;
Device::Ptr device = findNetworkInterface(m_addDevicePath);
- if(device->managed())
+ if(device.isNull())
+ {
+ KLOG_DEBUG() << "this device interface is not found";
+ return;
+ }
+ if(device->isValid())
{
handleDeviceAdded(m_addDevicePath);
- m_Timer.stop();
}
else
{
- KLOG_INFO() << "this device interface is not ready";
+ KLOG_INFO() << "this device interface is invalid!";
m_Timer.start();
- }
- waitCounts++;
- if(waitCounts > MAX_WAIT_COUNTS)
- {
- KLOG_INFO() << "This device is not currently managed by NetworkManager";
- m_Timer.stop();
+ KLOG_INFO() << "wait counts:" << m_waitCounts;
} });
- // Note:新设备插入后需要等待一段时间Device::List networkInterfaces() 来不及更新
- connect(notifier(), &Notifier::deviceAdded, [=](const QString &uni)
+ connect(&m_Timer, &QTimer::timeout, this, [this]()
{
- m_addDevicePath = uni;
Device::Ptr device = findNetworkInterface(m_addDevicePath);
- KLOG_DEBUG() << "device->availableConnections().isEmpty():" << device->availableConnections().isEmpty();
- KLOG_DEBUG() << "device->managed():" << device->managed();
- if(!device->isValid())
+ if(device->isValid())
{
- KLOG_INFO() << "this device interface is invalid!";
- return ;
- }
- if(device->managed())
handleDeviceAdded(m_addDevicePath);
+ m_Timer.stop();
+ }
else
{
- KLOG_INFO() << "this device interface is not ready";
+ KLOG_INFO() << "this device interface is invalid!";
m_Timer.start();
- KLOG_INFO() << "wait counts:" << waitCounts;
+ }
+ m_waitCounts++;
+ if(m_waitCounts > MAX_WAIT_COUNTS)
+ {
+ KLOG_INFO() << "This device is currently invalid by NetworkManager";
+ m_Timer.stop();
} });
connect(notifier(), &Notifier::deviceRemoved, this, &CPanelNetworkWidget::handleDeviceRemoved);
- connect(ui->sidebar, &QListWidget::itemClicked, this,&CPanelNetworkWidget::handleSideBarItemClicked);
+ connect(notifier(), &Notifier::wirelessEnabledChanged, this, &CPanelNetworkWidget::handleWirelessEnabledChanged);
+ connect(notifier(), &Notifier::networkingEnabledChanged, this, &CPanelNetworkWidget::handleNetworkingEnabledChanged);
+
+ connect(ui->sidebar, &QListWidget::itemClicked, this, &CPanelNetworkWidget::handleSideBarItemClicked);
connect(Kiran::StylePalette::instance(), &Kiran::StylePalette::themeChanged, this, &CPanelNetworkWidget::handleThemeChanged);
}
-// XXX:暂时全部item重新加载有待优化
-void CPanelNetworkWidget::handleDeviceAdded(const QString &devicePath)
+// XXX:需要优化改成动态增减侧边栏subItems而不是全部重新加载
+void CPanelNetworkWidget::handleManagedChanged()
{
+ auto device = qobject_cast<Device *>(sender());
+ if (device != nullptr)
+ {
+ if (device->managed())
+ {
+ }
+ }
reload();
emit subItemsChanged();
}
+// TODO:侧边栏标签显示设备可用或禁用
+void CPanelNetworkWidget::handleDeviceAdded(const QString &devicePath)
+{
+ KLOG_DEBUG() << "--------------------DeviceAdded :" << devicePath;
+}
+
void CPanelNetworkWidget::handleDeviceRemoved(const QString &devicePath)
{
- reload();
- emit subItemsChanged();
+ KLOG_DEBUG() << "---------------------DeviceRemoved: " << devicePath;
}
void CPanelNetworkWidget::reload()
{
- for (int i = 0; i < ui->stackedWidget->count(); ++i)
+ for (int i = 0; i < ui->stackedWidget->count(); i++)
{
auto widget = ui->stackedWidget->widget(i);
ui->stackedWidget->removeWidget(widget);
@@ -255,10 +285,10 @@ void CPanelNetworkWidget::reload()
QPixmap CPanelNetworkWidget::trayIconColorSwitch(const QString &iconPath)
{
- //icon原本为浅色
+ // icon原本为浅色
QIcon icon(iconPath);
- QPixmap pixmap = icon.pixmap(16,16);
- if( Kiran::StylePalette::instance()->paletteType() != Kiran::PALETTE_DARK )
+ QPixmap pixmap = icon.pixmap(16, 16);
+ if (Kiran::StylePalette::instance()->paletteType() != Kiran::PALETTE_DARK)
{
QImage image = pixmap.toImage();
image.invertPixels(QImage::InvertRgb);
@@ -272,7 +302,7 @@ void CPanelNetworkWidget::handleThemeChanged(Kiran::PaletteType paletteType)
for (int i = 0; i < ui->sidebar->count(); ++i)
{
auto icon = ui->sidebar->item(i)->icon();
- QPixmap pixmap = icon.pixmap(16,16);
+ QPixmap pixmap = icon.pixmap(16, 16);
QImage image = pixmap.toImage();
image.invertPixels(QImage::InvertRgb);
pixmap = QPixmap::fromImage(image);
@@ -283,10 +313,10 @@ void CPanelNetworkWidget::handleThemeChanged(Kiran::PaletteType paletteType)
void CPanelNetworkWidget::handleSideBarItemClicked(QListWidgetItem *item)
{
ui->stackedWidget->setCurrentIndex(item->data(Qt::UserRole).toInt());
-
- QString itemText = item->text();
- KLOG_DEBUG() << "item clicked:" << item->text();
- if(itemText.contains(tr("Wireless Network")))
+
+ QString itemText = item->text();
+ KLOG_DEBUG() << "item clicked:" << item->text();
+ if (itemText.contains(tr("Wireless Network")))
{
KLOG_DEBUG() << "item clicked wireless";
for (auto device : m_wirelessDeviceList)
@@ -305,4 +335,12 @@ void CPanelNetworkWidget::handleSideBarItemClicked(QListWidgetItem *item)
}
}
}
+}
+
+void CPanelNetworkWidget::handleWirelessEnabledChanged(bool enable)
+{
+}
+
+void CPanelNetworkWidget::handleNetworkingEnabledChanged(bool enable)
+{
}
\ No newline at end of file
diff --git a/plugins/network/src/plugin/cpanel-network-widget.h b/plugins/network/src/plugin/cpanel-network-widget.h
index 112cab8..03c7350 100644
--- a/plugins/network/src/plugin/cpanel-network-widget.h
+++ b/plugins/network/src/plugin/cpanel-network-widget.h
@@ -15,11 +15,11 @@
#ifndef KIRAN_CPANEL_NETWORK_CPANEL_NETWORK_WIDGET_H
#define KIRAN_CPANEL_NETWORK_CPANEL_NETWORK_WIDGET_H
-#include <QWidget>
#include <NetworkManagerQt/Device>
+#include <QTimer>
+#include <QWidget>
#include "kiran-sidebar-widget.h"
#include "style-palette.h"
-#include <QTimer>
QT_BEGIN_NAMESPACE
namespace Ui
@@ -51,6 +51,9 @@ public slots:
void handleDeviceRemoved(const QString &devicePath);
void handleThemeChanged(Kiran::PaletteType paletteType);
void handleSideBarItemClicked(QListWidgetItem *item);
+ void handleManagedChanged();
+ void handleWirelessEnabledChanged(bool enable);
+ void handleNetworkingEnabledChanged(bool enable);
signals:
void subItemsChanged();
@@ -63,7 +66,7 @@ private:
QTimer m_Timer;
QString m_addDevicePath;
- int waitCounts;
+ int m_waitCounts;
};
-#endif //KIRAN_CPANEL_NETWORK_CPANEL_NETWORK_WIDGET_H
+#endif // KIRAN_CPANEL_NETWORK_CPANEL_NETWORK_WIDGET_H
diff --git a/plugins/network/src/plugin/details-page.cpp b/plugins/network/src/plugin/details-page.cpp
index a585a68..dfee3f6 100644
--- a/plugins/network/src/plugin/details-page.cpp
+++ b/plugins/network/src/plugin/details-page.cpp
@@ -58,7 +58,7 @@ void DetailsPage::initUI()
QWidget *widget = new ConnectionDetailsWidget(m_deviceList.at(0), this);
ui->stackedWidget->addWidget(widget);
}
- else if(m_deviceList.count() == 0)
+ else if (m_deviceList.count() == 0)
{
QWidget *widget = new ConnectionDetailsWidget(nullptr, this);
ui->stackedWidget->addWidget(widget);
@@ -105,12 +105,13 @@ void DetailsPage::handleDeviceRemoved(const QString &devicePath)
void DetailsPage::handleActiveConnectionChanged()
{
+ reload();
}
void DetailsPage::handleActiveConnectionAdded(const QString &activeConnectionPath)
{
ActiveConnection::Ptr activeConnection = findActiveConnection(activeConnectionPath);
- connect(activeConnection.data(), &ActiveConnection::stateChanged, this, &DetailsPage::handleActiveConnectionStateChanged);
+ connect(activeConnection.data(), &ActiveConnection::stateChanged, this, &DetailsPage::handleActiveConnectionStateChanged, Qt::UniqueConnection);
}
void DetailsPage::handleActiveConnectionRemoved(const QString &activeConnectionPath)
diff --git a/plugins/network/src/plugin/manager/vpn-manager.cpp b/plugins/network/src/plugin/manager/vpn-manager.cpp
index 96d6baa..cd858b5 100644
--- a/plugins/network/src/plugin/manager/vpn-manager.cpp
+++ b/plugins/network/src/plugin/manager/vpn-manager.cpp
@@ -14,17 +14,17 @@
#include "vpn-manager.h"
#include <qt5-log-i.h>
+#include <style-property.h>
#include <NetworkManagerQt/Manager>
#include <NetworkManagerQt/Settings>
#include <NetworkManagerQt/VpnConnection>
#include <QDialog>
#include <QPointer>
#include <QScrollBar>
+#include "connection-name-widget.h"
+#include "status-notification.h"
#include "text-input-dialog.h"
#include "ui_vpn-manager.h"
-#include "status-notification.h"
-#include "connection-name-widget.h"
-#include <style-property.h>
using namespace NetworkManager;
Q_DECLARE_METATYPE(VpnType)
@@ -43,21 +43,20 @@ VpnManager::~VpnManager()
void VpnManager::initUI()
{
- ui->connectionShowPage->setConnectionType(ConnectionSettings::Vpn);
- ui->connectionShowPage->setItemWidgetType(ITEM_WIDGET_TYPE_PLUGIN);
+ ui->connectionShowPage->init(ConnectionSettings::Vpn, "");
ui->connectionShowPage->setTitle(tr("VPN"));
ui->connectionShowPage->setSwitchButtonVisible(false);
- ui->connectionShowPage->showConnectionLists(ConnectionSettings::Vpn);
-// ui->vpnType->addItem(tr("L2TP"), VPN_TYPE_L2TP);
+ // ui->vpnType->addItem(tr("L2TP"), VPN_TYPE_L2TP);
ui->vpnType->addItem(tr("PPTP"), VPN_TYPE_PPTP);
- Kiran::StylePropertyHelper::setButtonType(ui->saveButton,Kiran::BUTTON_Default);
+ Kiran::StylePropertyHelper::setButtonType(ui->saveButton, Kiran::BUTTON_Default);
}
-//XXX:是否使用模板提升通用性
+// XXX:是否使用模板提升通用性
void VpnManager::initConnection()
{
- connect(ui->connectionShowPage, &ConnectionShowPage::requestCreatConnection, [=]() {
+ connect(ui->connectionShowPage, &ConnectionShowPage::requestCreatConnection, [=]()
+ {
//默认创建vpn类型L2TP
ui->vpnTypeWidget->setVisible(true);
ui->vpnType->setCurrentIndex(0);
@@ -66,13 +65,13 @@ void VpnManager::initConnection()
QPointer<QScrollBar> scrollBar = ui->scrollArea->verticalScrollBar();
scrollBar->setValue(0);
- ui->stackedWidget->setCurrentIndex(PAGE_SETTING);
- });
+ ui->stackedWidget->setCurrentIndex(PAGE_SETTING); });
connect(ui->connectionShowPage, &ConnectionShowPage::requestEditConnection, this, &VpnManager::handleRequestEditConnection);
connect(ui->connectionShowPage, &ConnectionShowPage::requestActivateCurrentItemConnection, this, &VpnManager::handleRequestActivateConnection);
- connect(ui->vpnType, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int index) {
+ connect(ui->vpnType, QOverload<int>::of(&QComboBox::currentIndexChanged), [=](int index)
+ {
VpnType type = ui->vpnType->currentData().value<VpnType>();
ui->vpnTypeStacked->setCurrentIndex(VPN_TYPE_PPTP);
switch (type)
@@ -85,49 +84,47 @@ void VpnManager::initConnection()
break;
default:
break;
- }
- });
+ } });
connect(ui->returnButton, &QPushButton::clicked, this, &VpnManager::handleReturnPreviousPage);
connect(ui->l2tpSetting, &VpnL2tpSetting::returnPreviousPage, this, &VpnManager::handleReturnPreviousPage);
connect(ui->pptpSetting, &VpnPptpSetting::returnPreviousPage, this, &VpnManager::handleReturnPreviousPage);
- connect(ui->saveButton, &QPushButton::clicked, [=]() {
- int index = ui->vpnTypeStacked->currentIndex();
- switch (index)
- {
- case VPN_TYPE_L2TP:
- if(ui->l2tpSetting->isInputValid())
+ connect(ui->saveButton, &QPushButton::clicked, [=]()
{
- ui->l2tpSetting->handleSaveButtonClicked(ConnectionSettings::ConnectionType::Vpn);
- handleReturnPreviousPage();
- }
- break;
- case VPN_TYPE_PPTP:
- if(ui->pptpSetting->isInputValid())
+ int index = ui->vpnTypeStacked->currentIndex();
+ switch (index)
+ {
+ case VPN_TYPE_L2TP:
+ if(ui->l2tpSetting->isInputValid())
+ {
+ ui->l2tpSetting->handleSaveButtonClicked(ConnectionSettings::ConnectionType::Vpn);
+ handleReturnPreviousPage();
+ }
+ break;
+ case VPN_TYPE_PPTP:
+ if(ui->pptpSetting->isInputValid())
+ {
+ ui->pptpSetting->handleSaveButtonClicked(ConnectionSettings::ConnectionType::Vpn);
+ handleReturnPreviousPage();
+ }
+ break;
+ default:
+ break;
+ } });
+
+ connect(ui->connectionShowPage, &ConnectionShowPage::connectionUpdated, [=](const QString &path)
{
- ui->pptpSetting->handleSaveButtonClicked(ConnectionSettings::ConnectionType::Vpn);
- handleReturnPreviousPage();
- }
- break;
- default:
- break;
- }
- });
-
- connect(ui->connectionShowPage,&ConnectionShowPage::connectionUpdated,[=](const QString &path){
- KLOG_DEBUG() << "Connection::updated:" << path;
- //移除后再加载进来以更新信息
- ui->connectionShowPage->removeConnectionFromLists(path);
- Connection::Ptr updateConnection = findConnection(path);
- ui->connectionShowPage->addConnectionToLists(updateConnection,"");
- handleReturnPreviousPage();
- });
+ KLOG_DEBUG() << "Connection::updated:" << path;
+ //移除后再加载进来以更新信息
+ ui->connectionShowPage->removeConnectionFromLists(path);
+ Connection::Ptr updateConnection = findConnection(path);
+ ui->connectionShowPage->addConnectionToLists(updateConnection,"");
+ handleReturnPreviousPage(); });
initNotifierConnection();
}
-
void VpnManager::handleRequestEditConnection(const QString &uuid, QString activeConnectionPath)
{
//隐藏选择VPN类型
@@ -158,7 +155,7 @@ void VpnManager::handleRequestEditConnection(const QString &uuid, QString active
}
else
{
- //other type
+ // other type
}
QPointer<QScrollBar> scrollBar = ui->scrollArea->verticalScrollBar();
@@ -167,7 +164,7 @@ void VpnManager::handleRequestEditConnection(const QString &uuid, QString active
}
//考虑弹窗输入密码的情况
-void VpnManager::handleRequestActivateConnection(const QString &connectionPath,const QString &connectionParameter)
+void VpnManager::handleRequestActivateConnection(const QString &connectionPath, const QString &connectionParameter)
{
Connection::Ptr connection = findConnection(connectionPath);
ConnectionSettings::Ptr settings = connection->settings();
@@ -190,19 +187,19 @@ void VpnManager::handleRequestActivateConnection(const QString &connectionPath,c
QString tips = QString(tr("Password required to connect to %1.")).arg(settings->id());
inputDialog.setText(tips);
- connect(&inputDialog, &TextInputDialog::password, [=](const QString &password) {
+ connect(&inputDialog, &TextInputDialog::password, [=](const QString &password)
+ {
NMStringMap secretsMap = vpnSetting->secrets();
secretsMap.insert("password", password);
vpnSetting->setSecrets(secretsMap);
activateVPNConnection(connectionPath, connectionParameter);
- connection->clearSecrets();
- });
+ connection->clearSecrets(); });
inputDialog.exec();
}
}
-void VpnManager::activateVPNConnection(const QString &connectionPath,const QString &connectionParameter)
+void VpnManager::activateVPNConnection(const QString &connectionPath, const QString &connectionParameter)
{
QDBusPendingReply<QDBusObjectPath> reply =
NetworkManager::activateConnection(connectionPath, "", connectionParameter);
@@ -222,11 +219,10 @@ void VpnManager::activateVPNConnection(const QString &connectionPath,const QStri
void VpnManager::handleNotifierConnectionAdded(const QString &path)
{
- Connection::Ptr connection = findConnection(path);
- if ((connection->settings()->connectionType() == ConnectionSettings::ConnectionType::Vpn)
- && (!connection->name().isEmpty()))
+ Connection::Ptr connection = findConnection(path);
+ if ((connection->settings()->connectionType() == ConnectionSettings::ConnectionType::Vpn) && (!connection->name().isEmpty()))
{
- ui->connectionShowPage->addConnectionToLists(connection,"");
+ ui->connectionShowPage->addConnectionToLists(connection, "");
}
}
@@ -238,10 +234,10 @@ void VpnManager::handleNotifierConnectionRemoved(const QString &path)
void VpnManager::handleActiveConnectionAdded(const QString &activePath)
{
ActiveConnection::Ptr activatedConnection = findActiveConnection(activePath);
- if(activatedConnection == nullptr)
+ if (activatedConnection == nullptr)
{
KLOG_DEBUG() << "activatedConnection == nullptr";
- return ;
+ return;
}
if (activatedConnection->type() == ConnectionSettings::ConnectionType::Vpn)
{
@@ -249,10 +245,9 @@ void VpnManager::handleActiveConnectionAdded(const QString &activePath)
QString uuid = vpnConnection->uuid();
KLOG_DEBUG() << "vpn uuid:" << uuid;
QListWidgetItem *activeItem = ui->connectionShowPage->findItemByUuid(uuid);
- ui->connectionShowPage->updateItemActivatedPath(activeItem,activePath);
- connect(vpnConnection.data(), &VpnConnection::stateChanged, [=](VpnConnection::State state, VpnConnection::StateChangeReason reason) {
- handleVpnConnectionStateChanged(state, reason, activePath);
- });
+ ui->connectionShowPage->updateItemActivatedPath(activeItem, activePath);
+ connect(vpnConnection.data(), &VpnConnection::stateChanged, [=](VpnConnection::State state, VpnConnection::StateChangeReason reason)
+ { handleVpnConnectionStateChanged(state, reason, activePath); });
//加载等待动画
auto item = ui->connectionShowPage->findItemByActivatedPath(activePath);
ui->connectionShowPage->updateItemActivatingStatus(item);
@@ -263,13 +258,13 @@ void VpnManager::handleActiveConnectionRemoved(const QString &activePath)
{
}
-//TODO:若没有安装VPN插件则需要提示
+// TODO:若没有安装VPN插件则需要提示
void VpnManager::handleVpnConnectionStateChanged(VpnConnection::State state, VpnConnection::StateChangeReason reason, const QString &activePath)
{
auto activeConnection = findActiveConnection(activePath);
- KLOG_DEBUG() << " activeConnection->id():" << activeConnection->id();
+ KLOG_DEBUG() << " activeConnection->id():" << activeConnection->id();
QString id = "";
- if(activeConnection != nullptr)
+ if (activeConnection != nullptr)
id = activeConnection->id();
switch (state)
{
@@ -294,13 +289,13 @@ void VpnManager::handleVpnConnectionStateChanged(VpnConnection::State state, Vpn
break;
case VpnConnection::State::Failed:
KLOG_DEBUG() << "VpnConnection::State::Failed";
- if(!id.isEmpty())
+ if (!id.isEmpty())
StatusNotification::ActiveConnectionDeactivatedNotify(id);
handleVpnStateFailed(activePath);
break;
case VpnConnection::State::Disconnected:
KLOG_DEBUG() << "VpnConnection::State::Disconnected";
- if(!id.isEmpty())
+ if (!id.isEmpty())
StatusNotification::ActiveConnectionDeactivatedNotify(id);
handleVpnStateDisconnected(activePath);
break;
@@ -354,9 +349,9 @@ void VpnManager::handleVpnConnectionStateChanged(VpnConnection::State state, Vpn
void VpnManager::handleVpnStateActivated(const QString &activePath)
{
ActiveConnection::Ptr activeConnection = findActiveConnection(activePath);
- if(activeConnection.isNull())
- return ;
- if( activeConnection->type() == ConnectionSettings::Vpn)
+ if (activeConnection.isNull())
+ return;
+ if (activeConnection->type() == ConnectionSettings::Vpn)
{
ui->connectionShowPage->updateItemActivatedStatus(activePath);
auto item = ui->connectionShowPage->findItemByActivatedPath(activePath);
@@ -398,4 +393,3 @@ void VpnManager::clearVpnSetting()
break;
}
}
-
diff --git a/plugins/network/src/plugin/manager/wired-manager.cpp b/plugins/network/src/plugin/manager/wired-manager.cpp
index dfccd25..cfd11b2 100644
--- a/plugins/network/src/plugin/manager/wired-manager.cpp
+++ b/plugins/network/src/plugin/manager/wired-manager.cpp
@@ -40,25 +40,22 @@ WiredManager::~WiredManager()
void WiredManager::initUI()
{
- ui->connectionShowPage->setConnectionType(ConnectionSettings::Wired);
- ui->connectionShowPage->setDevicePath(m_devicePath);
- ui->connectionShowPage->setItemWidgetType(ITEM_WIDGET_TYPE_PLUGIN);
+ ui->connectionShowPage->init(ConnectionSettings::Wired, m_devicePath);
ui->connectionShowPage->setTitle(tr("Wired Network Adapter"));
ui->connectionShowPage->setSwitchButtonVisible(false);
- ui->connectionShowPage->showConnectionLists(ConnectionSettings::ConnectionType::Wired);
Kiran::StylePropertyHelper::setButtonType(ui->saveButton, Kiran::BUTTON_Default);
}
void WiredManager::initConnection()
{
- connect(ui->connectionShowPage, &ConnectionShowPage::requestCreatConnection, [=]()
+ connect(ui->connectionShowPage, &ConnectionShowPage::requestCreatConnection, this, [this]()
{
ui->wiredSettingPage->showSettingPage();
QPointer<QScrollBar> scrollBar = ui->scrollArea->verticalScrollBar();
scrollBar->setValue(0);
ui->stackedWidget->setCurrentIndex(PAGE_SETTING); });
- connect(ui->connectionShowPage, &ConnectionShowPage::requestEditConnection, [=](const QString &uuid, QString activeConnectionPath)
+ connect(ui->connectionShowPage, &ConnectionShowPage::requestEditConnection, this, [this](const QString &uuid, QString activeConnectionPath)
{
ui->wiredSettingPage->initConnectionSettings(ConnectionSettings::ConnectionType::Wired, uuid);
ui->wiredSettingPage->initSettingPage();
@@ -73,7 +70,7 @@ void WiredManager::initConnection()
connect(ui->wiredSettingPage, &WiredSettingPage::returnPreviousPage, this, &WiredManager::handleReturnPreviousPage);
- connect(ui->connectionShowPage, &ConnectionShowPage::connectionUpdated, this,&WiredManager::handleConnectionUpdated);
+ connect(ui->connectionShowPage, &ConnectionShowPage::connectionUpdated, this, &WiredManager::handleConnectionUpdated);
connect(ui->connectionShowPage, &ConnectionShowPage::requestActivateCurrentItemConnection,
this, &WiredManager::handleRequestActivateConnection);
diff --git a/plugins/network/src/plugin/manager/wireless-manager.cpp b/plugins/network/src/plugin/manager/wireless-manager.cpp
index 7c2eabb..2596c39 100644
--- a/plugins/network/src/plugin/manager/wireless-manager.cpp
+++ b/plugins/network/src/plugin/manager/wireless-manager.cpp
@@ -11,6 +11,7 @@
*
* Author: luoqing <luoqing@kylinos.com.cn>
*/
+#include "wireless-manager.h"
#include <qt5-log-i.h>
#include <style-property.h>
#include <NetworkManagerQt/Settings>
@@ -20,7 +21,6 @@
#include <QScrollBar>
#include "text-input-dialog.h"
#include "ui_wireless-manager.h"
-#include "wireless-manager.h"
using namespace NetworkManager;
@@ -41,14 +41,10 @@ WirelessManager::~WirelessManager()
void WirelessManager::initUI()
{
- ui->connectionShowPage->setConnectionType(ConnectionSettings::Wireless);
- ui->connectionShowPage->setDevicePath(m_devicePath);
- ui->connectionShowPage->setItemWidgetType(ITEM_WIDGET_TYPE_PLUGIN);
+ ui->connectionShowPage->init(ConnectionSettings::Wireless, m_devicePath);
ui->connectionShowPage->setTitle(tr("Wireless Network Adapter"));
- ui->connectionShowPage->initSwitchButton();
ui->connectionShowPage->setSwitchButtonVisible(true);
ui->connectionShowPage->setCreateButtonVisible(false);
- ui->connectionShowPage->showWirelessNetworkLists();
Kiran::StylePropertyHelper::setButtonType(ui->saveButton, Kiran::BUTTON_Default);
// XXX:由于存在switchButton所以特别修改一下topMargin
@@ -57,38 +53,38 @@ void WirelessManager::initUI()
void WirelessManager::initConnection()
{
- connect(ui->connectionShowPage, &ConnectionShowPage::requestCreatConnection, [=]()
+ connect(ui->connectionShowPage, &ConnectionShowPage::requestCreatConnection, this, [this]()
{
- ui->wirelessSettingPage->showSettingPage();
- QPointer<QScrollBar> scrollBar = ui->scrollArea->verticalScrollBar();
- scrollBar->setValue(0);
- ui->stackedWidget->setCurrentIndex(PAGE_SETTING); });
+ ui->wirelessSettingPage->showSettingPage();
+ QPointer<QScrollBar> scrollBar = ui->scrollArea->verticalScrollBar();
+ scrollBar->setValue(0);
+ ui->stackedWidget->setCurrentIndex(PAGE_SETTING); });
- connect(ui->connectionShowPage, &ConnectionShowPage::requestEditConnection, [=](const QString &uuid, QString activeConnectionPath)
+ connect(ui->connectionShowPage, &ConnectionShowPage::requestEditConnection, this, [this](const QString &uuid, QString activeConnectionPath)
{
- ActiveConnection::Ptr activeConnection = findActiveConnection(activeConnectionPath);
- ConnectionSettings::Ptr connectionSettings = activeConnection->connection()->settings();
- ui->wirelessSettingPage->setConnection(activeConnection->connection());
- ui->wirelessSettingPage->setConnectionSettings(connectionSettings);
- ui->wirelessSettingPage->initSettingPage();
- ui->wirelessSettingPage->showSettingPage(activeConnectionPath);
- QPointer<QScrollBar> scrollBar = ui->scrollArea->verticalScrollBar();
- scrollBar->setValue(0);
- ui->stackedWidget->setCurrentIndex(PAGE_SETTING); });
+ ActiveConnection::Ptr activeConnection = findActiveConnection(activeConnectionPath);
+ ConnectionSettings::Ptr connectionSettings = activeConnection->connection()->settings();
+ ui->wirelessSettingPage->setConnection(activeConnection->connection());
+ ui->wirelessSettingPage->setConnectionSettings(connectionSettings);
+ ui->wirelessSettingPage->initSettingPage();
+ ui->wirelessSettingPage->showSettingPage(activeConnectionPath);
+ QPointer<QScrollBar> scrollBar = ui->scrollArea->verticalScrollBar();
+ scrollBar->setValue(0);
+ ui->stackedWidget->setCurrentIndex(PAGE_SETTING); });
connect(ui->returnButton, &QPushButton::clicked, this, &WirelessManager::handleReturnPreviousPage);
- connect(ui->saveButton, &QPushButton::clicked, [=]()
+ connect(ui->saveButton, &QPushButton::clicked, this, [this]()
{
- ui->wirelessSettingPage->handleSaveButtonClicked(ConnectionSettings::ConnectionType::Wireless);
- handleReturnPreviousPage(); });
+ ui->wirelessSettingPage->handleSaveButtonClicked(ConnectionSettings::ConnectionType::Wireless);
+ handleReturnPreviousPage(); });
connect(ui->wirelessSettingPage, &WirelessSettingPage::returnPreviousPage, this, &WirelessManager::handleReturnPreviousPage);
// XXX:更改信号
- connect(ui->wirelessSettingPage, &WirelessSettingPage::settingUpdated, [=]()
+ connect(ui->wirelessSettingPage, &WirelessSettingPage::settingUpdated, this, [this]()
{
- KLOG_DEBUG() << "WiredSettingPage::settingUpdated";
- handleReturnPreviousPage();
- refreshConnectionLists(); });
+ KLOG_DEBUG() << "WiredSettingPage::settingUpdated";
+ handleReturnPreviousPage();
+ refreshConnectionLists(); });
connect(ui->connectionShowPage, &ConnectionShowPage::requestConnectWirelessNetwork,
this, &WirelessManager::handleRequestConnectWirelessNetwork);
@@ -99,8 +95,8 @@ void WirelessManager::initConnection()
connect(m_wirelessDevice.data(), &WirelessDevice::networkDisappeared, this, &WirelessManager::handleNetworkDisappeared, Qt::QueuedConnection);
connect(m_wirelessDevice.data(), &WirelessDevice::networkAppeared, this, &WirelessManager::handleNetworkAppeared);
- //Note:插件与托盘都对该设备的信号进行了连接,容易干扰重复,因此,插件暂未实现该函数
- connect(m_devicePtr.data(), &Device::stateChanged, this, &WirelessManager::handleDeviceStateChanged,Qt::UniqueConnection);
+ // Note:插件与托盘都对该设备的信号进行了连接,容易干扰重复,因此,插件暂未实现该函数
+ connect(m_devicePtr.data(), &Device::stateChanged, this, &WirelessManager::handleDeviceStateChanged, Qt::UniqueConnection);
}
//在已存在WirelessSetting配置的情况下激活连接连接过一次后会创建WirelessSetting配置
@@ -203,7 +199,7 @@ void WirelessManager::handleActiveConnectionAdded(const QString &path)
auto item = ui->connectionShowPage->item(row);
ui->connectionShowPage->itemSimpleStatus(item);
}
- connect(activatedConnection.data(), &ActiveConnection::stateChanged, this, &WirelessManager::handleActiveConnectionStateChanged,Qt::UniqueConnection);
+ connect(activatedConnection.data(), &ActiveConnection::stateChanged, this, &WirelessManager::handleActiveConnectionStateChanged, Qt::UniqueConnection);
}
}
diff --git a/plugins/network/src/plugin/setting-widget/vpn/vpn-ppp.cpp b/plugins/network/src/plugin/setting-widget/vpn/vpn-ppp.cpp
index c195235..383d3e4 100644
--- a/plugins/network/src/plugin/setting-widget/vpn/vpn-ppp.cpp
+++ b/plugins/network/src/plugin/setting-widget/vpn/vpn-ppp.cpp
@@ -63,11 +63,11 @@ void VpnPpp::initOptionsButton(const QStringList &supportOptions)
switchButton->setProperty("option", option);
m_optionsButtonMap[option] = switchButton;
- QHBoxLayout *horizontalLayout = new QHBoxLayout(this);
+ QHBoxLayout *horizontalLayout = new QHBoxLayout();
horizontalLayout->addWidget(strLabel);
horizontalLayout->addStretch();
horizontalLayout->addWidget(switchButton);
- horizontalLayout->setContentsMargins(0,0,0,0);
+ horizontalLayout->setContentsMargins(0, 0, 0, 0);
ui->optionsLayout->addLayout(horizontalLayout);
}
else
@@ -156,7 +156,7 @@ void VpnPpp::saveSettings()
m_vpnSetting->setInitialized(true);
}
-//XXX:优化流程
+// XXX:优化流程
void VpnPpp::showSettings()
{
if (m_vpnSetting != nullptr)
diff --git a/plugins/network/src/tray/network-tray.cpp b/plugins/network/src/tray/network-tray.cpp
index 5aeb35d..232882b 100644
--- a/plugins/network/src/tray/network-tray.cpp
+++ b/plugins/network/src/tray/network-tray.cpp
@@ -74,7 +74,7 @@ void NetworkTray::initConnect()
// TODO:优化deviceAdded的逻辑
// 需要等待一段时间Device::List networkInterfaces() 来不及更新
- connect(notifier(), &Notifier::deviceAdded, [this](const QString &uni)
+ connect(notifier(), &Notifier::deviceAdded, this, [this](const QString &uni)
{
m_addDevicePath = uni;
Device::Ptr device = findNetworkInterface(m_addDevicePath);
@@ -83,18 +83,17 @@ void NetworkTray::initConnect()
KLOG_DEBUG() << "this device interface is not found";
return;
}
-
- KLOG_DEBUG() << "device->managed():" << device->managed();
- if(!device->isValid())
+ KLOG_DEBUG() << "device->uni():" << device->uni();
+ KLOG_DEBUG() << "device->interfaceName():" << device->interfaceName();
+ KLOG_DEBUG() << "device->state():" << device->state();
+ KLOG_DEBUG() << "device->isValid():" << device->isValid();
+ if(device->isValid())
{
- KLOG_INFO() << "this device interface is invalid!";
- return ;
- }
- if(device->managed())
handleDeviceAdded(m_addDevicePath);
+ }
else
{
- KLOG_INFO() << "this device interface is not ready";
+ KLOG_INFO() << "this device interface is invalid!";
m_Timer.start();
KLOG_INFO() << "wait counts:" << m_waitCounts;
} });
@@ -102,7 +101,7 @@ void NetworkTray::initConnect()
m_Timer.setInterval(500);
m_Timer.setSingleShot(true);
m_waitCounts = 1;
- connect(&m_Timer, &QTimer::timeout, [this]()
+ connect(&m_Timer, &QTimer::timeout, this, [this]()
{
Device::Ptr device = findNetworkInterface(m_addDevicePath);
if(device.isNull())
@@ -132,6 +131,8 @@ void NetworkTray::initConnect()
connect(notifier(), &Notifier::primaryConnectionChanged, this, &NetworkTray::handlePrimaryConnectionChanged);
+ connect(notifier(), &Notifier::wirelessEnabledChanged, this, &NetworkTray::handleWirelessEnabledChanged, Qt::UniqueConnection);
+
// 无线网络如果一下消失多个网络短时间会触发多次SizeHint变更的信号
m_wirelessTimer.setInterval(100);
m_wirelessTimer.setSingleShot(true);
@@ -184,8 +185,8 @@ void NetworkTray::getAvailableDeviceList()
for (Device::Ptr dev : deviceList)
{
KLOG_DEBUG() << "dev->interfaceName():" << dev->interfaceName();
- KLOG_DEBUG() << "dev->availableConnections():" << dev->availableConnections();
KLOG_DEBUG() << "dev->state():" << dev->state();
+ KLOG_DEBUG() << "dev->isValid():" << dev->isValid();
if (dev->state() == Device::Unavailable)
continue;
@@ -295,103 +296,50 @@ void NetworkTray::getTrayGeometry()
// TODO:增加其他状态图标
void NetworkTray::setTrayIcon(NetworkManager::Status status)
{
- // 判断主连接类型,托盘网络图标以主连接类型为准
- // NetworkManager::primaryConnectionType() 更新不及时,暂时不用
- ActiveConnection::Ptr primaryActiveConnection = primaryConnection();
- if (primaryActiveConnection != nullptr)
+ if (status == NetworkManager::Status::Connected)
{
- auto primaryConnectionType = primaryActiveConnection->connection()->settings()->connectionType();
- if (primaryConnectionType == ConnectionSettings::Wireless)
+ // 判断主连接类型,托盘网络图标以主连接类型为准
+ // NetworkManager::primaryConnectionType() 更新不及时,暂时不用
+ ActiveConnection::Ptr primaryActiveConnection = primaryConnection();
+ if (primaryActiveConnection != nullptr)
{
- // ActiveConnection::Ptr primaryActiveConnection = primaryConnection();
- // WirelessSetting::Ptr wirelessSetting = primaryActiveConnection->connection()->settings()->setting(Setting::Wireless).dynamicCast<WirelessSetting>();
- // QString ssid = QString(wirelessSetting->ssid());
+ auto primaryConnectionType = primaryActiveConnection->connection()->settings()->connectionType();
+ if (primaryConnectionType == ConnectionSettings::Wireless)
+ {
+ // ActiveConnection::Ptr primaryActiveConnection = primaryConnection();
+ // WirelessSetting::Ptr wirelessSetting = primaryActiveConnection->connection()->settings()->setting(Setting::Wireless).dynamicCast<WirelessSetting>();
+ // QString ssid = QString(wirelessSetting->ssid());
- // QString devicePath = primaryActiveConnection->devices().value(0);
- // Device::Ptr device = findNetworkInterface(devicePath);
- // WirelessDevice::Ptr wirelessDevice = qobject_cast<WirelessDevice*>(device);
- // WirelessNetwork::Ptr wirelessNetwork = wirelessDevice->findNetwork(ssid);
- // int signalStrength = wirelessNetwork->signalStrength();
+ // QString devicePath = primaryActiveConnection->devices().value(0);
+ // Device::Ptr device = findNetworkInterface(devicePath);
+ // WirelessDevice::Ptr wirelessDevice = qobject_cast<WirelessDevice*>(device);
+ // WirelessNetwork::Ptr wirelessNetwork = wirelessDevice->findNetwork(ssid);
+ // int signalStrength = wirelessNetwork->signalStrength();
- switch (status)
- {
- case NetworkManager::Status::Unknown:
- // 未知
- m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-disconnected.svg"));
- break;
- case NetworkManager::Status::Asleep:
- // 不可用
- m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-disconnected.svg"));
- break;
- case NetworkManager::Status::Disconnected:
- // 不可用
- m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-disconnected.svg"));
- break;
- case NetworkManager::Status::Disconnecting:
- break;
- case NetworkManager::Status::Connecting:
- // 加载动画
- break;
- case NetworkManager::Status::ConnectedLinkLocal:
- m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-disconnected.svg"));
- // 不可用
- break;
- case NetworkManager::Status::ConnectedSiteOnly:
- // 未知
- m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-disconnected.svg"));
- break;
- case NetworkManager::Status::Connected:
- // 可用
m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wireless-4.svg"));
- break;
- default:
- break;
}
}
else
{
- switch (status)
- {
- case NetworkManager::Status::Unknown:
- // 未知
- m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-disconnected.svg"));
- break;
- case NetworkManager::Status::Asleep:
- // 不可用
- m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-disconnected.svg"));
- break;
- case NetworkManager::Status::Disconnected:
- // 不可用
- m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-disconnected.svg"));
- break;
- case NetworkManager::Status::Disconnecting:
- break;
- case NetworkManager::Status::Connecting:
- // 加载动画
- break;
- case NetworkManager::Status::ConnectedLinkLocal:
- m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-disconnected.svg"));
- // 不可用
- break;
- case NetworkManager::Status::ConnectedSiteOnly:
- // 未知
- m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-disconnected.svg"));
- break;
- case NetworkManager::Status::Connected:
- // 可用
- m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-connection.svg"));
- break;
- default:
- break;
- }
+ // 可用
+ m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-connection.svg"));
}
}
+ else if (status == NetworkManager::Status::Disconnecting || NetworkManager::Status::Connecting)
+ {
+ // TODO:加载动画
+ }
+ else
+ {
+ m_systemTray->setIcon(trayIconColorSwitch(":/kcp-network-images/wired-disconnected.svg"));
+ }
}
// 重新获取device、初始化刷新
// XXX:可以优化
void NetworkTray::handleDeviceAdded(const QString &devicePath)
{
+ KLOG_DEBUG() << "---------------------handleDeviceAdded:" << devicePath;
Device::Ptr device = findNetworkInterface(devicePath);
if (device->type() == Device::Ethernet)
{
@@ -406,6 +354,7 @@ void NetworkTray::handleDeviceAdded(const QString &devicePath)
// XXX:当device被移除时由于设备对象可能已经被删除所以并不能通过findNetworkInterface(path)找到该设备接口,进而知道被删除的设备类型
void NetworkTray::handleDeviceRemoved(const QString &devicePath)
{
+ KLOG_DEBUG() << "handle Device Removed :" << devicePath;
if (m_wiredTrayPage != nullptr)
{
if (m_wiredTrayPage->devicePathList().contains(devicePath))
@@ -424,12 +373,76 @@ void NetworkTray::handleDeviceStateChanged(NetworkManager::Device::State newstat
NetworkManager::Device::State oldstate,
NetworkManager::Device::StateChangeReason reason)
{
+ if ((oldstate == Device::Unavailable) &&
+ (newstate != Device::Unmanaged && newstate != Device::UnknownState))
+ {
+ }
+
+ if (newstate == Device::State::Unavailable)
+ {
+ Device *device = qobject_cast<Device *>(sender());
+ // KLOG_DEBUG() << "Device::State::Unavailable";
+ // KLOG_DEBUG() << "device->uni():" << device->uni();
+ // KLOG_DEBUG() << "device->interfaceName():" << device->interfaceName();
+ }
}
void NetworkTray::handleDeviceManagedChanged()
{
}
+// TODO:托盘对不可用状态进行提示
+/**
+ * XXX:由于在禁用和开启wifi时并没有发出Wireless设备的deviceRemoved和deviceAdded信号
+ * 并且当WirelessEnabledChanged信号发送时device state 还处在unavailbel 不可用状态,需要处理
+ */
+
+// TODO:托盘对不可用状态进行提示
+void NetworkTray::handleWirelessEnabledChanged(bool enable)
+{
+ KLOG_DEBUG() << "-----------------------handleWirelessEnabledChanged:" << enable;
+
+ if (m_wirelessTrayPage != nullptr)
+ {
+ m_verticalLayout->removeWidget(m_wirelessTrayPage);
+ delete m_wirelessTrayPage;
+ m_wirelessTrayPage = nullptr;
+ }
+ m_wirelessDeviceList.clear();
+
+ if (enable)
+ {
+ // networkInterfaces() 是否及时更新,需验证
+ const Device::List deviceList = networkInterfaces();
+ for (Device::Ptr dev : deviceList)
+ {
+ KLOG_DEBUG() << "dev->interfaceName():" << dev->interfaceName();
+ KLOG_DEBUG() << "dev->state():" << dev->state();
+ KLOG_DEBUG() << "dev->isValid():" << dev->isValid();
+
+ if ((dev->state() == Device::Unmanaged) || (dev->state() == Device::UnknownState))
+ continue;
+
+ if (dev->type() == Device::Wifi)
+ {
+ // Note:此时WirelessDevice状态还处在Unavailable但还是将该设备加载
+ if (dev->state() == Device::Unavailable)
+ {
+ }
+ m_wirelessDeviceList << dev;
+ }
+ }
+
+ if (m_wirelessDeviceList.count() != 0)
+ {
+ m_wirelessTrayPage = new TrayPage(m_wirelessDeviceList, this);
+ m_verticalLayout->insertWidget(-1, m_wirelessTrayPage);
+ m_verticalLayout->setMargin(0);
+ update();
+ }
+ }
+}
+
void NetworkTray::handleNetworkManagerStatusChanged(NetworkManager::Status status)
{
setTrayIcon(status);
@@ -446,14 +459,15 @@ void NetworkTray::reloadWiredTrayPage()
delete m_wiredTrayPage;
m_wiredTrayPage = nullptr;
m_wiredDeviceList.clear();
+
getAvailableDeviceList();
if (m_wiredDeviceList.count() != 0)
+ {
m_wiredTrayPage = new TrayPage(m_wiredDeviceList, this);
-
- // XXX:待修改使有线widget一直在最上层
- m_verticalLayout->insertWidget(0, m_wiredTrayPage);
- m_verticalLayout->setMargin(0);
- update();
+ m_verticalLayout->insertWidget(0, m_wiredTrayPage);
+ m_verticalLayout->setMargin(0);
+ update();
+ }
}
void NetworkTray::reloadWirelessTrayPage()
@@ -465,10 +479,12 @@ void NetworkTray::reloadWirelessTrayPage()
getAvailableDeviceList();
if (m_wirelessDeviceList.count() != 0)
+ {
m_wirelessTrayPage = new TrayPage(m_wirelessDeviceList, this);
- m_verticalLayout->insertWidget(-1, m_wirelessTrayPage);
- m_verticalLayout->setMargin(0);
- update();
+ m_verticalLayout->insertWidget(-1, m_wirelessTrayPage);
+ m_verticalLayout->setMargin(0);
+ update();
+ }
}
void NetworkTray::handleAdjustedTraySize(QSize sizeHint)
@@ -476,8 +492,8 @@ void NetworkTray::handleAdjustedTraySize(QSize sizeHint)
// this->sizeHint() 更新不及时,需要等一段时间
QTimer::singleShot(100, this, [=]()
{
- adjustSize();
- setTrayPagePos(); });
+ adjustSize();
+ setTrayPagePos(); });
}
void NetworkTray::handleThemeChanged(Kiran::PaletteType paletteType)
diff --git a/plugins/network/src/tray/network-tray.h b/plugins/network/src/tray/network-tray.h
index 7601e4f..23a0a9b 100644
--- a/plugins/network/src/tray/network-tray.h
+++ b/plugins/network/src/tray/network-tray.h
@@ -23,7 +23,6 @@
#include <QWidget>
#include "kiran-rounded-tray-popup/kiran-rounded-tray-popup.h"
-
class WiredTrayWidget;
class WirelessTrayWidget;
class StatusNotifierManagerInterface;
@@ -65,6 +64,7 @@ public slots:
NetworkManager::Device::State oldstate,
NetworkManager::Device::StateChangeReason reason);
void handleDeviceManagedChanged();
+ void handleWirelessEnabledChanged(bool enable);
void handleAdjustedTraySize(QSize sizeHint);
diff --git a/plugins/network/src/tray/tray-page.cpp b/plugins/network/src/tray/tray-page.cpp
index 7415dc8..c854d36 100644
--- a/plugins/network/src/tray/tray-page.cpp
+++ b/plugins/network/src/tray/tray-page.cpp
@@ -33,11 +33,15 @@ TrayPage::~TrayPage()
void TrayPage::init()
{
- Device::Type deviceType = m_deviceList.at(0)->type();
- initUI(deviceType);
- initConnection();
+ if (m_deviceList.count() != 0)
+ {
+ Device::Type deviceType = m_deviceList.value(0)->type();
+ initUI(deviceType);
+ initConnection();
+ }
}
+// XXX:修改初始化
void TrayPage::initUI(Device::Type deviceType)
{
setFixedWidth(240);
@@ -50,7 +54,7 @@ void TrayPage::initUI(Device::Type deviceType)
// {
// setSingleDeviceWidget(deviceType);
// }
- if(m_deviceList.count() != 0)
+ if (m_deviceList.count() != 0)
{
setMultiDeviceWidget(deviceType);
}
@@ -133,12 +137,9 @@ void TrayPage::handleDeviceComboBoxChanged(int index)
QStringList TrayPage::devicePathList()
{
QStringList devicePathList;
- KLOG_DEBUG() << "m_deviceList:" << m_deviceList;
for (Device::Ptr device : m_deviceList)
{
- if (device == nullptr)
- KLOG_DEBUG() << "device == nullptr";
- else
+ if (device != nullptr)
devicePathList << device->uni();
}
KLOG_DEBUG() << "devicePathList:" << devicePathList;
diff --git a/plugins/network/src/tray/wireless-tray-widget.cpp b/plugins/network/src/tray/wireless-tray-widget.cpp
index 2a480b1..32a9791 100644
--- a/plugins/network/src/tray/wireless-tray-widget.cpp
+++ b/plugins/network/src/tray/wireless-tray-widget.cpp
@@ -43,10 +43,9 @@ void WirelessTrayWidget::init()
initUI();
initConnection();
- ActiveConnection::Ptr activatedConnection = m_wirelessDevice->activeConnection();
- if(!activatedConnection.isNull())
+ ActiveConnection::Ptr activatedConnection = m_wirelessDevice->activeConnection();
+ if (!activatedConnection.isNull())
connect(activatedConnection.data(), &ActiveConnection::stateChanged, this, &WirelessTrayWidget::handleActiveConnectionStateChanged, Qt::UniqueConnection);
-
}
void WirelessTrayWidget::initUI()
@@ -70,7 +69,7 @@ void WirelessTrayWidget::initConnection()
connect(m_connectionLists, &ConnectionLists::sendPasswordToWirelessSetting, this, &WirelessTrayWidget::setSecurityPskAndActivateWirelessConnection);
connect(m_connectionLists, &ConnectionLists::sendSsidToWireless, this, &WirelessTrayWidget::handleRequestConnectHiddenNetwork);
- connect(m_devicePtr.data(), &Device::stateChanged, this, &WirelessTrayWidget::handleDeviceStateChanged,Qt::UniqueConnection);
+ connect(m_devicePtr.data(), &Device::stateChanged, this, &WirelessTrayWidget::handleDeviceStateChanged, Qt::UniqueConnection);
connect(m_connectionLists, &ConnectionLists::adjustedTraySize, this, &WirelessTrayWidget::adjustedTraySize);
}
@@ -110,7 +109,7 @@ void WirelessTrayWidget::handleRequestConnectHiddenNetwork(const QString &ssid)
{
KLOG_DEBUG() << "Hidden networks have been explicitly detected,return";
StatusNotification::connectitonHiddenNetworkFailedNotify(ssid);
-
+
QListWidgetItem *item = m_connectionLists->getHiddenNetworkItem();
m_connectionLists->itemSimpleStatus(item);
return;
@@ -148,7 +147,7 @@ void WirelessTrayWidget::getWirelessAvailableConnections(const QString &devicePa
}
// 在已存在WirelessSetting配置的情况下激活连接连接过一次后会创建WirelessSetting配置
-//Note:不存在的无线网络或者配置能activate成功但是返回的ActivateConnection可能会空从而导致错误
+// Note:不存在的无线网络或者配置能activate成功但是返回的ActivateConnection可能会空从而导致错误
void WirelessTrayWidget::activateWirelessConnection(const QString &connectionPath, const QString &devicePath, const QString &accessPointPath)
{
if (!connectionPath.isEmpty())
@@ -164,7 +163,7 @@ void WirelessTrayWidget::activateWirelessConnection(const QString &connectionPat
StatusNotification::connectitonFailedNotify(connectionPath);
}
else
- KLOG_DEBUG() << "reply.reply():" << reply.reply();
+ KLOG_DEBUG() << "reply.reply():" << reply.reply();
}
}
@@ -226,13 +225,13 @@ void WirelessTrayWidget::createConnectionSettings(const QString &ssid, const QSt
}
}
-//Note:不存在的无线网络或者配置activate成功但是返回的ActivateConnection可能会空从而导致错误
+// Note:不存在的无线网络或者配置activate成功但是返回的ActivateConnection可能会空从而导致错误
void WirelessTrayWidget::addAndActivateWirelessConnection(ConnectionSettings::Ptr connectionSettings)
{
const QString ssid = m_connectionInfo.wirelessInfo.ssid;
const QString accessPointPath = m_connectionInfo.wirelessInfo.accessPointPath;
KLOG_DEBUG() << "accessPointPath" << accessPointPath;
- KLOG_DEBUG() << "wireless device path:" << m_devicePath;
+ KLOG_DEBUG() << "wireless device path:" << m_devicePath;
QDBusPendingReply<QDBusObjectPath, QDBusObjectPath> reply =
NetworkManager::addAndActivateConnection(connectionSettings->toMap(), m_devicePath, accessPointPath);
@@ -260,9 +259,9 @@ void WirelessTrayWidget::handleRequestDisconnect(const QString &activatedConnect
}
/*FIX:
-*由于ActiveConnection为空暂时无法获得有效的连接信息
-*存在多个网卡时由于无法确定是那个该ActiveConnection来自那个设备则多个设备都会发送通知
-*/
+ *由于ActiveConnection为空暂时无法获得有效的连接信息
+ *存在多个网卡时由于无法确定是那个该ActiveConnection来自那个设备则多个设备都会发送通知
+ */
void WirelessTrayWidget::handleActiveConnectionAdded(const QString &path)
{
//多个网卡,还需要判断设备
@@ -270,12 +269,12 @@ void WirelessTrayWidget::handleActiveConnectionAdded(const QString &path)
ActiveConnection::Ptr activatedConnection = findActiveConnection(path);
if (activatedConnection == nullptr)
{
- //Note:目前已知连接一个不存在的无线网络时activatedConnection为空
+ // Note:目前已知连接一个不存在的无线网络时activatedConnection为空
StatusNotification::connectitonFailedNotify();
KLOG_DEBUG() << "new add activatedConnection is nullptr";
return;
}
-
+
QStringList deviceList = activatedConnection->devices();
if ((activatedConnection->type() == ConnectionSettings::ConnectionType::Wireless) && deviceList.contains(m_devicePath))
{
@@ -296,7 +295,7 @@ void WirelessTrayWidget::handleActiveConnectionAdded(const QString &path)
m_connectionLists->itemSimpleStatus(item);
}
connect(activatedConnection.data(), &ActiveConnection::stateChanged, this, &WirelessTrayWidget::handleActiveConnectionStateChanged, Qt::UniqueConnection);
- }
+ }
}
void WirelessTrayWidget::handleActiveConnectionRemoved(const QString &path)
@@ -310,7 +309,7 @@ void WirelessTrayWidget::handleStateActivating(const QString &activatedPath)
ActiveConnection::Ptr activatedConnection = findActiveConnection(activatedPath);
if (activatedConnection == nullptr)
{
- //Note:目前已知连接一个不存在的无线网络时activatedConnection为空
+ // Note:目前已知连接一个不存在的无线网络时activatedConnection为空
StatusNotification::connectitonFailedNotify();
KLOG_DEBUG() << "activatedConnection == nullptr";
return;
@@ -357,7 +356,6 @@ void WirelessTrayWidget::handleStateActivated(const QString &activatedPath)
//连接成功后手动rescan
QDBusPendingReply<> replyRequestScan = m_wirelessDevice->requestScan();
replyRequestScan.waitForFinished();
- KLOG_DEBUG() << "--------------------------StateActivated requestScan";
if (replyRequestScan.isError())
{
KLOG_DEBUG() << "StateActivated requestScan error:" << replyRequestScan.error();
@@ -447,8 +445,7 @@ void WirelessTrayWidget::handleRequestIgnore(const QString &activatedConnectionP
QDBusPendingReply<> replyRemove = connection->remove();
replyRemove.waitForFinished();
if (replyRemove.isError())
- KLOG_INFO() << "Remove connection failed:" << replyRemove.error();
- });
+ KLOG_INFO() << "Remove connection failed:" << replyRemove.error(); });
}
void WirelessTrayWidget::setSecurityPskAndActivateWirelessConnection(const QString &password)
--
2.33.0