Skip to content

Commit

Permalink
Simplify DeviceModelPretty on Linux.
Browse files Browse the repository at this point in the history
  • Loading branch information
john-preston committed Oct 31, 2021
1 parent 6425712 commit d4021e7
Showing 1 changed file with 21 additions and 38 deletions.
59 changes: 21 additions & 38 deletions base/platform/linux/base_info_linux.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,14 +26,16 @@
namespace Platform {
namespace {

QString GetDesktopEnvironment() {
constexpr auto kMaxDeviceModelLength = 15;

[[nodiscard]] QString GetDesktopEnvironment() {
const auto value = qEnvironmentVariable("XDG_CURRENT_DESKTOP");
return value.contains(':')
? value.left(value.indexOf(':'))
: value;
}

QString ChassisTypeToString(uint type) {
[[nodiscard]] QString ChassisTypeToString(uint type) {
switch (type) {
case 0x3: /* Desktop */
case 0x4: /* Low Profile Desktop */
Expand Down Expand Up @@ -62,43 +64,30 @@ QString ChassisTypeToString(uint type) {
}
}

[[nodiscard]] QString SimplifyDeviceModel(QString model) {
return model.replace(QChar('_'), QString()).simplified();
}

} // namespace

QString DeviceModelPretty() {
static const auto result = [&] {
constexpr auto kMaxDeviceModelLength = 15;

const auto productName = [] {
QFile file("/sys/class/dmi/id/product_name");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
return QString(file.readAll()).simplified();
}
return QString();
}();

const auto value = [](const char *key) {
auto file = QFile(u"/sys/class/dmi/id/"_q + key);
return (file.open(QIODevice::ReadOnly | QIODevice::Text))
? SimplifyDeviceModel(QString(file.readAll()))
: QString();
};
const auto productName = value("product_name");
if (!productName.isEmpty()
&& productName.size() <= kMaxDeviceModelLength) {
return productName;
}

const auto productFamily = [] {
QFile file("/sys/class/dmi/id/product_family");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
return QString(file.readAll()).simplified();
}
return QString();
}();

const auto boardName = [] {
QFile file("/sys/class/dmi/id/board_name");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
return QString(file.readAll()).simplified();
}
return QString();
}();

const auto familyName = (
productFamily + ' ' + boardName).simplified();
const auto productFamily = value("product_family");
const auto boardName = value("board_name");
const auto familyName = SimplifyDeviceModel(
productFamily + ' ' + boardName);

if (!familyName.isEmpty()
&& familyName.size() <= kMaxDeviceModelLength) {
Expand All @@ -111,14 +100,8 @@ QString DeviceModelPretty() {
return productFamily;
}

const auto chassisType = [] {
QFile file("/sys/class/dmi/id/chassis_type");
if (file.open(QIODevice::ReadOnly | QIODevice::Text)) {
return ChassisTypeToString(file.readAll().toUInt());
}
return ChassisTypeToString(0);
}();

const auto chassisType = ChassisTypeToString(
value("chassis_type").toUInt());
if (!chassisType.isEmpty()) {
return chassisType;
}
Expand Down

0 comments on commit d4021e7

Please sign in to comment.