Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions deepin-devicemanager/src/DeviceManager/DeviceBios.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand Down
12 changes: 9 additions & 3 deletions deepin-devicemanager/src/DeviceManager/DeviceCpu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -300,6 +300,12 @@ void DeviceCpu::setInfoFromDmidecode(const QMap<QString, QString> &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);
Expand Down
2 changes: 1 addition & 1 deletion deepin-devicemanager/src/DeviceManager/DeviceCpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
#ifndef DEVICECPU_H
#define DEVICECPU_H
#include "DeviceInfo.h"

#include "commonfunction.h"

Check warning on line 9 in deepin-devicemanager/src/DeviceManager/DeviceCpu.h

View workflow job for this annotation

GitHub Actions / cppcheck

Include file: "commonfunction.h" not found.
/**
* @brief The DeviceCpu class
* 用来描述CPU的类
Expand Down
49 changes: 49 additions & 0 deletions deepin-devicemanager/src/DeviceManager/DeviceManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1017,6 +1017,55 @@
}
}

void DeviceManager::orderDiskByType()
{
// 自定义排序
auto compareDevices = [](DeviceBaseInfo* baseInfo1, DeviceBaseInfo* baseInfo2) {
DeviceStorage *storageA = dynamic_cast<DeviceStorage *>(baseInfo1);
DeviceStorage *storageB = dynamic_cast<DeviceStorage *>(baseInfo2);

if (storageA == nullptr || storageB == nullptr) {
return false;
}

// 判断是否为 USB 设备(包括 USB 接口的 SSD)
auto isUSBDevice = [](DeviceStorage *device) {

Check warning on line 1032 in deepin-devicemanager/src/DeviceManager/DeviceManager.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

Parameter 'device' can be declared as pointer to const
return device->interface().contains("USB") ||

Check warning on line 1033 in deepin-devicemanager/src/DeviceManager/DeviceManager.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

The condition 'device->interface().contains("USB") || device->interface().contains("USB") && device->mediaType().contains("SSD")' is equivalent to '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";
Expand Down
5 changes: 5 additions & 0 deletions deepin-devicemanager/src/DeviceManager/DeviceManager.h
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,11 @@ class DeviceManager : public QObject
*/
virtual void checkDiskSize();

/**
* @brief orderDiskByType:按照磁盘类型UFS、SSD、HDD、移动存储设备的顺序显示
*/
virtual void orderDiskByType();

// GPU设备相关 **************************************************************************************
/**
* @brief addGpuDevice:添加显卡
Expand Down
2 changes: 1 addition & 1 deletion deepin-devicemanager/src/DeviceManager/DeviceMemory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
6 changes: 3 additions & 3 deletions deepin-devicemanager/src/DeviceManager/DevicePower.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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");
Expand All @@ -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");
Expand Down
26 changes: 16 additions & 10 deletions deepin-devicemanager/src/DeviceManager/DeviceStorage.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -329,6 +329,16 @@
return strSerialNumber;
}

const QString &DeviceStorage::mediaType() const
{
return m_MediaType;
}

const QString &DeviceStorage::interface() const
{
return m_Interface;
}

bool DeviceStorage::addInfoFromlshw(const QMap<QString, QString> &mapInfo)
{
qCDebug(appLog) << "Add lshw info for storage device";
Expand Down Expand Up @@ -619,18 +629,14 @@
const QString DeviceStorage::getOverviewInfo()
{
// qCDebug(appLog) << "DeviceStorage::getOverviewInfo";
QString overViewInfo = QString("%1 (%2)").arg(m_Name).arg(m_Size);

Check warning on line 632 in deepin-devicemanager/src/DeviceManager/DeviceStorage.cpp

View workflow job for this annotation

GitHub Actions / cppcheck

Redundant initialization for 'overViewInfo'. The initialized value is overwritten before it is read.

// 见内网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;
Expand Down
4 changes: 4 additions & 0 deletions deepin-devicemanager/src/DeviceManager/DeviceStorage.h
Original file line number Diff line number Diff line change
Expand Up @@ -152,6 +152,10 @@ class DeviceStorage: public DeviceBaseInfo
*/
const QString getOverviewInfo() override;

const QString &interface() const;

const QString &mediaType() const;

protected:

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -273,6 +273,7 @@ void DeviceGenerator::generatorDiskDevice()
getDiskInfoFromLsblk();
getDiskInfoFromSmartCtl();
DeviceManager::instance()->mergeDisk();
DeviceManager::instance()->orderDiskByType();
qCDebug(appLog) << "DeviceGenerator::generatorDiskDevice end";
}

Expand Down
3 changes: 1 addition & 2 deletions deepin-devicemanager/src/GenerateDevice/HWGenerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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";
}
Expand Down
14 changes: 14 additions & 0 deletions deepin-devicemanager/src/Tool/EDIDParser.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down