From 2e646ac760bb10bb7be03d38ad3443d44cf98e30 Mon Sep 17 00:00:00 2001 From: gongheng Date: Fri, 10 Oct 2025 10:20:35 +0800 Subject: [PATCH] Fix: [network] Disable network failed -- The network control not have logic name and address, so disable failed. Log: fix issue Bug: https://pms.uniontech.com/bug-view-334701.html --- deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp | 8 ++++++++ deepin-devicemanager/src/DeviceManager/DeviceNetwork.h | 2 ++ deepin-devicemanager/src/Page/PageMultiInfo.cpp | 1 + deepin-devicemanager/src/Page/PageSingleInfo.cpp | 4 ++++ deepin-devicemanager/src/Widget/TableWidget.cpp | 8 ++++++++ 5 files changed, 23 insertions(+) diff --git a/deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp b/deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp index 0907050c..802db99b 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceNetwork.cpp @@ -248,6 +248,14 @@ QString DeviceNetwork::hwAddress() return m_MACAddress; } +bool DeviceNetwork::canDisable() +{ + if (m_SysPath.isEmpty()) { + return false; + } + return true; +} + void DeviceNetwork::initFilterKey() { // 初始化可显示属性 diff --git a/deepin-devicemanager/src/DeviceManager/DeviceNetwork.h b/deepin-devicemanager/src/DeviceManager/DeviceNetwork.h index 1bbda454..f00b6450 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceNetwork.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceNetwork.h @@ -112,6 +112,8 @@ class DeviceNetwork : public DeviceBaseInfo */ QString hwAddress(); + bool canDisable(); + protected: /** diff --git a/deepin-devicemanager/src/Page/PageMultiInfo.cpp b/deepin-devicemanager/src/Page/PageMultiInfo.cpp index c412ccb4..fc306dce 100644 --- a/deepin-devicemanager/src/Page/PageMultiInfo.cpp +++ b/deepin-devicemanager/src/Page/PageMultiInfo.cpp @@ -287,6 +287,7 @@ void PageMultiInfo::getTableListInfo(const QList &lst, QList(info); if (network) { menuControl.append(network->logicalName()); + menuControl.append(network->canDisable() ? "true" : "false"); } menuControlList.append(menuControl); diff --git a/deepin-devicemanager/src/Page/PageSingleInfo.cpp b/deepin-devicemanager/src/Page/PageSingleInfo.cpp index bd4b53c1..536d4b76 100644 --- a/deepin-devicemanager/src/Page/PageSingleInfo.cpp +++ b/deepin-devicemanager/src/Page/PageSingleInfo.cpp @@ -262,6 +262,10 @@ void PageSingleInfo::slotShowMenu(const QPoint &) if (!mp_Device->enable()) mp_WakeupMachine->setEnabled(false); mp_Menu->addAction(mp_WakeupMachine); + + // 根据网卡情况判断是否支持禁用 + if (!network->canDisable()) + mp_Menu->removeAction(mp_Enable); } mp_Menu->exec(QCursor::pos()); diff --git a/deepin-devicemanager/src/Widget/TableWidget.cpp b/deepin-devicemanager/src/Widget/TableWidget.cpp index 33d2a36f..510c6ddd 100644 --- a/deepin-devicemanager/src/Widget/TableWidget.cpp +++ b/deepin-devicemanager/src/Widget/TableWidget.cpp @@ -306,6 +306,14 @@ void TableWidget::slotShowMenu(const QPoint &point) mp_WakeupMachine->setEnabled(false); mp_Menu->addAction(mp_WakeupMachine); } + + // 根据网卡情况判断是否支持禁用 + QVariant canDisableForNetwork = item->data(Qt::UserRole + 3); + if (canDisableForNetwork.isValid()) { + if (canDisableForNetwork.toString() == "false") + mp_Menu->removeAction(mp_Enable); + } + mp_Menu->exec(QCursor::pos()); }