From fe496405f7486086b33716d4ae756391c457b7ae Mon Sep 17 00:00:00 2001 From: zhanghongyuan Date: Thu, 29 May 2025 11:10:21 +0800 Subject: [PATCH 1/5] fix: the cpu model in special machine. fix the cpu model. Log: fix the cpu model. Bug: https://pms.uniontech.com/task-view-377187.html --- deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp | 6 ++++++ deepin-devicemanager/src/DeviceManager/DeviceCpu.h | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp b/deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp index 8446af272..9ea1c1ae1 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp @@ -300,6 +300,12 @@ void DeviceCpu::setInfoFromDmidecode(const QMap &mapInfo) setAttribute(mapInfo, "product", m_Name); } + if (Common::specialComType > 0) { + if (mapInfo.contains("Version")) { + setAttribute(mapInfo, "Version", m_Name); + } + } + // 获取设备基本信息 setAttribute(mapInfo, "Manufacturer", m_Vendor); setAttribute(mapInfo, "Max Speed", m_Frequency, false); diff --git a/deepin-devicemanager/src/DeviceManager/DeviceCpu.h b/deepin-devicemanager/src/DeviceManager/DeviceCpu.h index 0670fb6bd..ea132ba88 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceCpu.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceCpu.h @@ -6,7 +6,7 @@ #ifndef DEVICECPU_H #define DEVICECPU_H #include "DeviceInfo.h" - +#include "commonfunction.h" /** * @brief The DeviceCpu class * 用来描述CPU的类 From fc894cd5607aa48c7062c295ab760cfed8421dc7 Mon Sep 17 00:00:00 2001 From: zhanghongyuan Date: Thu, 29 May 2025 13:13:31 +0800 Subject: [PATCH 2/5] fix: remove useless info. remove useless info. pick from: https://github.com/linuxdeepin/deepin-devicemanager/commit/e675774bd2da895682b067afadf188ba49323b9d Log: remove useless info. Task: https://pms.uniontech.com/task-view-377197.html Change-Id: I38069249ec2ad433e5401a921347d36ae06320c2 --- deepin-devicemanager/src/DeviceManager/DeviceBios.cpp | 4 ++-- deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp | 6 +++--- deepin-devicemanager/src/DeviceManager/DeviceMemory.cpp | 2 +- deepin-devicemanager/src/DeviceManager/DevicePower.cpp | 6 +++--- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/deepin-devicemanager/src/DeviceManager/DeviceBios.cpp b/deepin-devicemanager/src/DeviceManager/DeviceBios.cpp index 5db3ffa90..a1b99f13f 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceBios.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceBios.cpp @@ -235,9 +235,9 @@ void DeviceBios::initFilterKey() addFilterKey("Asset Tag"); addFilterKey("Features"); addFilterKey("Location In Chassis"); - addFilterKey("Chassis Handle"); +// addFilterKey("Chassis Handle"); addFilterKey("Type"); - addFilterKey("Contained Object Handles"); +// addFilterKey("Contained Object Handles"); addFilterKey("Product Name"); addFilterKey("Serial Number"); diff --git a/deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp b/deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp index 9ea1c1ae1..a0d189144 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp @@ -79,14 +79,14 @@ void DeviceCpu::loadBaseDeviceInfo() // 添加基本信息 addBaseDeviceInfo("Name", m_Name); addBaseDeviceInfo("Vendor", m_Vendor); - addBaseDeviceInfo("CPU ID", m_PhysicalID); - addBaseDeviceInfo("Core ID", m_CoreID); + // addBaseDeviceInfo(("CPU ID"), m_PhysicalID); + // addBaseDeviceInfo(("Core ID"), m_CoreID); addBaseDeviceInfo("Threads", m_ThreadNum); if (!m_FrequencyIsCur) { qCDebug(appLog) << "Frequency is not current, adding Max Speed."; addBaseDeviceInfo("Max Speed", m_MaxFrequency); } - addBaseDeviceInfo("BogoMIPS", m_BogoMIPS); +// addBaseDeviceInfo(("BogoMIPS"), m_BogoMIPS); addBaseDeviceInfo("Architecture", m_Architecture); addBaseDeviceInfo("CPU Family", m_Familly); addBaseDeviceInfo("Model", m_Model); diff --git a/deepin-devicemanager/src/DeviceManager/DeviceMemory.cpp b/deepin-devicemanager/src/DeviceManager/DeviceMemory.cpp index daae2bc68..6e0417b68 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceMemory.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceMemory.cpp @@ -127,7 +127,7 @@ void DeviceMemory::initFilterKey() { qCDebug(appLog) << "Initializing filter keys for memory device"; // 初始化可显示属性 - addFilterKey("Array Handle"); // 数组程序-2 +// addFilterKey("Array Handle"); // 数组程序-2 addFilterKey("Error Information Handle"); //错误信息程序-2 addFilterKey("Form Factor"); // 尺寸型号-2 addFilterKey("Set"); // 设置-2 diff --git a/deepin-devicemanager/src/DeviceManager/DevicePower.cpp b/deepin-devicemanager/src/DeviceManager/DevicePower.cpp index c2c1e398c..46c593c0c 100644 --- a/deepin-devicemanager/src/DeviceManager/DevicePower.cpp +++ b/deepin-devicemanager/src/DeviceManager/DevicePower.cpp @@ -160,9 +160,9 @@ void DevicePower::initFilterKey() { qCDebug(appLog) << "DevicePower::initFilterKey"; // 初始化可显示属性 - addFilterKey("native-path"); +// addFilterKey("native-path"); addFilterKey("power supply"); - addFilterKey("updated"); +// addFilterKey("updated"); addFilterKey("has history"); addFilterKey("has statistics"); addFilterKey("rechargeable"); @@ -181,7 +181,7 @@ void DevicePower::initFilterKey() addFilterKey("percentage"); // addFilterKey("temperature")); // 温度已经常规显示-2 addFilterKey("technology"); - addFilterKey("icon-name"); +// addFilterKey("icon-name"); addFilterKey("online"); addFilterKey("daemon-version"); addFilterKey("on-battery"); From 6aac683ab0ea600f7190eae4465bef22729896e5 Mon Sep 17 00:00:00 2001 From: zhanghongyuan Date: Fri, 30 May 2025 09:31:04 +0800 Subject: [PATCH 3/5] fix: adjust the storage display order. adjust the storage display order. pick from: https://github.com/linuxdeepin/deepin-devicemanager/commit/af466052f3224799d6c293064e604d1f9365803b Log: adjust the storage display order. Task: https://pms.uniontech.com/task-view-377189.html Change-Id: Id1d49719127fb01e61e05ec7cdd2743823068b54 --- .../src/DeviceManager/DeviceManager.cpp | 49 +++++++++++++++++++ .../src/DeviceManager/DeviceManager.h | 5 ++ .../src/DeviceManager/DeviceStorage.cpp | 26 ++++++---- .../src/DeviceManager/DeviceStorage.h | 4 ++ .../src/GenerateDevice/DeviceGenerator.cpp | 1 + 5 files changed, 75 insertions(+), 10 deletions(-) diff --git a/deepin-devicemanager/src/DeviceManager/DeviceManager.cpp b/deepin-devicemanager/src/DeviceManager/DeviceManager.cpp index 4df091769..2cc081771 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceManager.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceManager.cpp @@ -1017,6 +1017,55 @@ void DeviceManager::checkDiskSize() } } +void DeviceManager::orderDiskByType() +{ + // 自定义排序 + auto compareDevices = [](DeviceBaseInfo* baseInfo1, DeviceBaseInfo* baseInfo2) { + DeviceStorage *storageA = dynamic_cast(baseInfo1); + DeviceStorage *storageB = dynamic_cast(baseInfo2); + + if (storageA == nullptr || storageB == nullptr) { + return false; + } + + // 判断是否为 USB 设备(包括 USB 接口的 SSD) + auto isUSBDevice = [](DeviceStorage *device) { + return device->interface().contains("USB") || + (device->interface().contains("USB") && device->mediaType().contains("SSD")); + }; + + // 1. 首先按照 UFS 优先 + if (storageA->interface().contains("UFS") && !storageB->interface().contains("UFS")) + return true; + if (!storageA->interface().contains("UFS") && storageB->interface().contains("UFS")) + return false; + + // 2. 然后按照 SSD、HDD 排序(排除 USB 接口的 SSD) + if (!isUSBDevice(storageA) && !isUSBDevice(storageB)) { + if (storageA->mediaType().contains("SSD") && !storageB->mediaType().contains("SSD")) + return true; + if (!storageA->mediaType().contains("SSD") && storageB->mediaType().contains("SSD")) + return false; + if (storageA->mediaType().contains("HDD") && !storageB->mediaType().contains("HDD")) + return true; + if (!storageA->mediaType().contains("HDD") && storageB->mediaType().contains("HDD")) + return false; + } + + // 3. 最后按照 USB 设备排序(包括 USB 接口的 SSD) + if (isUSBDevice(storageA) && !isUSBDevice(storageB)) + return false; // USB 设备排在后面 + if (!isUSBDevice(storageA) && isUSBDevice(storageB)) + return true; + + // 如果所有条件都相同,保持原有顺序 + return false; + }; + + // 使用自定义比较函数对列表进行排序 + std::sort(m_ListDeviceStorage.begin(), m_ListDeviceStorage.end(), compareDevices); +} + bool DeviceManager::setStorageDeviceMediaType(const QString &name, const QString &value) { qCDebug(appLog) << "Setting storage device media type"; diff --git a/deepin-devicemanager/src/DeviceManager/DeviceManager.h b/deepin-devicemanager/src/DeviceManager/DeviceManager.h index bb6a37e09..0d4ea7d8a 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceManager.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceManager.h @@ -211,6 +211,11 @@ class DeviceManager : public QObject */ virtual void checkDiskSize(); + /** + * @brief orderDiskByType:按照磁盘类型UFS、SSD、HDD、移动存储设备的顺序显示 + */ + virtual void orderDiskByType(); + // GPU设备相关 ************************************************************************************** /** * @brief addGpuDevice:添加显卡 diff --git a/deepin-devicemanager/src/DeviceManager/DeviceStorage.cpp b/deepin-devicemanager/src/DeviceManager/DeviceStorage.cpp index 2b3e3b4eb..b8bdf1b55 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceStorage.cpp +++ b/deepin-devicemanager/src/DeviceManager/DeviceStorage.cpp @@ -329,6 +329,16 @@ QString DeviceStorage::getSerialID(QString &strDeviceLink) return strSerialNumber; } +const QString &DeviceStorage::mediaType() const +{ + return m_MediaType; +} + +const QString &DeviceStorage::interface() const +{ + return m_Interface; +} + bool DeviceStorage::addInfoFromlshw(const QMap &mapInfo) { qCDebug(appLog) << "Add lshw info for storage device"; @@ -621,16 +631,12 @@ const QString DeviceStorage::getOverviewInfo() // qCDebug(appLog) << "DeviceStorage::getOverviewInfo"; QString overViewInfo = QString("%1 (%2)").arg(m_Name).arg(m_Size); - // 见内网gerrit项目 os-config 中机型的 specialComType , 示例配置文件位置如下: - // os-config/hardware/机型/etc/dsg/configs/overrides/org.deepin.devicemanager/org.deepin.devicemanager/4000-org.deepin.devicemanager.override.json - if (Common::specialComType == 5){ - if (m_Interface.contains("UFS", Qt::CaseInsensitive)) { - overViewInfo = QString("%1 %2").arg(m_Size).arg("UFS"); - } else if (m_Interface.contains("USB", Qt::CaseInsensitive)) { - overViewInfo = QString("%1 %2").arg(m_Size).arg("USB"); - } else { - overViewInfo = QString("%1 %2").arg(m_Size).arg(m_MediaType); - } + if (m_Interface.contains("UFS", Qt::CaseInsensitive)) { + overViewInfo = QString("%1 %2").arg(m_Size).arg("UFS"); + } else if (m_Interface.contains("USB", Qt::CaseInsensitive)) { + overViewInfo = QString("%1 %2").arg(m_Size).arg("USB"); + } else { + overViewInfo = QString("%1 %2").arg(m_Size).arg(m_MediaType); } return overViewInfo; diff --git a/deepin-devicemanager/src/DeviceManager/DeviceStorage.h b/deepin-devicemanager/src/DeviceManager/DeviceStorage.h index 6a4af6793..cf6212fa1 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceStorage.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceStorage.h @@ -152,6 +152,10 @@ class DeviceStorage: public DeviceBaseInfo */ const QString getOverviewInfo() override; + QString interface() const; + + QString mediaType() const; + protected: /** diff --git a/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp b/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp index 6e2782bc8..cf2640d4c 100644 --- a/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp +++ b/deepin-devicemanager/src/GenerateDevice/DeviceGenerator.cpp @@ -273,6 +273,7 @@ void DeviceGenerator::generatorDiskDevice() getDiskInfoFromLsblk(); getDiskInfoFromSmartCtl(); DeviceManager::instance()->mergeDisk(); + DeviceManager::instance()->orderDiskByType(); qCDebug(appLog) << "DeviceGenerator::generatorDiskDevice end"; } From a0b001de2915a6e17f4f02da0e207fea7db3a8b4 Mon Sep 17 00:00:00 2001 From: zhanghongyuan Date: Fri, 30 May 2025 15:50:43 +0800 Subject: [PATCH 4/5] fix: update device description to Universal Flash Storage Update device description to fixed value "Universal Flash Storage". Log: Update device description to fixed value "Universal Flash Storage" Bug: https://pms.uniontech.com/bug-view-315353.html Change-Id: Id04f0cf6666fd50496e95e8b631c8598e0c632cb --- deepin-devicemanager/src/DeviceManager/DeviceStorage.h | 4 ++-- deepin-devicemanager/src/GenerateDevice/HWGenerator.cpp | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/deepin-devicemanager/src/DeviceManager/DeviceStorage.h b/deepin-devicemanager/src/DeviceManager/DeviceStorage.h index cf6212fa1..2d89749bd 100644 --- a/deepin-devicemanager/src/DeviceManager/DeviceStorage.h +++ b/deepin-devicemanager/src/DeviceManager/DeviceStorage.h @@ -152,9 +152,9 @@ class DeviceStorage: public DeviceBaseInfo */ const QString getOverviewInfo() override; - QString interface() const; + const QString &interface() const; - QString mediaType() const; + const QString &mediaType() const; protected: diff --git a/deepin-devicemanager/src/GenerateDevice/HWGenerator.cpp b/deepin-devicemanager/src/GenerateDevice/HWGenerator.cpp index 101fdba06..dea5bbfeb 100644 --- a/deepin-devicemanager/src/GenerateDevice/HWGenerator.cpp +++ b/deepin-devicemanager/src/GenerateDevice/HWGenerator.cpp @@ -308,8 +308,7 @@ void HWGenerator::generatorDiskDevice() tempMap["Vendor"] = "nouse"; if (name.contains("SDINFDO4-256G",Qt::CaseInsensitive)) tempMap["Name"] = "nouse"; - // 应HW的要求,将描述固定为 Universal Flash Storage - tempMap["Description"] = "Universal Flash Storage"; + if (Common::specialComType == 2) { tempMap["Interface"] = "UFS 3.1"; } From 75582be125149b6b9f4d40d92fce2fcc36152ad6 Mon Sep 17 00:00:00 2001 From: zhanghongyuan Date: Tue, 3 Jun 2025 15:53:14 +0800 Subject: [PATCH 5/5] fix: add the detail mode of screen size add the detail mode of screen size. extend the screen size. Log: add the detail mode of screen size Bug: https://pms.uniontech.com/bug-view-318561.html Change-Id: I1e51351fffe4b79e6db0050b1c5c9ced9828dd1d --- deepin-devicemanager/src/Tool/EDIDParser.cpp | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/deepin-devicemanager/src/Tool/EDIDParser.cpp b/deepin-devicemanager/src/Tool/EDIDParser.cpp index 27e808673..1a8b26c26 100644 --- a/deepin-devicemanager/src/Tool/EDIDParser.cpp +++ b/deepin-devicemanager/src/Tool/EDIDParser.cpp @@ -220,6 +220,20 @@ void EDIDParser::parseScreenSize() m_Height = height16; } + QString s66 = getBytes(4, m_LittleEndianMode ? 2 : 3), + s67 = getBytes(4, m_LittleEndianMode ? 3 : 2), + s68 = getBytes(4, m_LittleEndianMode ? 4 : 5); + + if (!s66.isEmpty() && !s67.isEmpty() && !s68.isEmpty()) { + int width_mm = hexToDec(s66).toInt() + ((hexToDec(s68).toInt() & 0xF0) << 4); + int height_mm = hexToDec(s67).toInt() + ((hexToDec(s68).toInt() & 0x0F) << 8); + + if (width_mm > 0 && height_mm > 0) { + m_Width = width_mm; + m_Height = height_mm; + } + } + double inch = sqrt((m_Width / 2.54) * (m_Width / 2.54) + (m_Height / 2.54) * (m_Height / 2.54))/10; m_ScreenSize = QString("%1 %2(%3mm×%4mm)").arg(QString::number(inch, '0', 1)).arg(QObject::tr("inch")).arg(m_Width).arg(m_Height); qCDebug(appLog) << "Screen size parsed:" << m_ScreenSize << "Width:" << m_Width << "Height:" << m_Height;