File indexing completed on 2024-04-21 05:31:42

0001 /*
0002     SPDX-FileCopyrightText: 2020 Marco Martin <mart@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #include "SensorGroup_p.h"
0008 
0009 #include <KLocalizedString>
0010 #include <QDebug>
0011 #include <QRegularExpression>
0012 
0013 namespace KSysGuard
0014 {
0015 SensorGroup::SensorGroup()
0016 {
0017     retranslate();
0018 }
0019 
0020 SensorGroup::~SensorGroup()
0021 {
0022 }
0023 
0024 void SensorGroup::retranslate()
0025 {
0026     m_sensorNames.clear();
0027     m_segmentNames.clear();
0028 
0029     m_sensorNames[QStringLiteral("cpu/cpu\\d+/usage")] = i18nc("Total load sensor of all cores", "[Group] Total Usage");
0030     m_sensorNames[QStringLiteral("cpu/cpu\\d+/user")] = i18nc("All cores user load sensors", "[Group] User Usage");
0031     m_sensorNames[QStringLiteral("cpu/cpu\\d+/system")] = i18nc("All cores user system sensors", "[Group] System Usage");
0032     m_sensorNames[QStringLiteral("cpu/cpu\\d+/wait")] = i18nc("All cores wait load sensors", "[Group] Wait Usage");
0033     m_sensorNames[QStringLiteral("cpu/cpu\\d+/frequency")] = i18nc("All cores clock frequency sensors", "[Group] Clock Frequency");
0034     m_sensorNames[QStringLiteral("cpu/cpu\\d+/temperature")] = i18nc("All cores temperature sensors", "[Group] Temperature");
0035     m_sensorNames[QStringLiteral("cpu/cpu\\d+/name")] = i18nc("All cores names", "[Group] Name");
0036 
0037     m_sensorNames[QStringLiteral("partitions/(?!all).*/usedspace")] = i18n("[Group] Used");
0038     m_sensorNames[QStringLiteral("partitions/(?!all).*/freespace")] = i18n("[Group] Available");
0039     m_sensorNames[QStringLiteral("partitions/(?!all).*/filllevel")] = i18n("[Group] Percentage Used");
0040     m_sensorNames[QStringLiteral("partitions/(?!all).*/total")] = i18n("[Group] Total Size");
0041 
0042     m_sensorNames[QStringLiteral("network/(?!all).*/network")] = i18n("[Group] Network Name");
0043     m_sensorNames[QStringLiteral("network/(?!all).*/ipv4address")] = i18n("[Group] IPv4 Address");
0044     m_sensorNames[QStringLiteral("network/(?!all).*/ipv6address")] = i18n("[Group] IPv6 Address");
0045     m_sensorNames[QStringLiteral("network/(?!all).*/signal")] = i18n("[Group] Signal Strength");
0046     m_sensorNames[QStringLiteral("network/(?!all).*/download")] = i18n("[Group] Download Rate");
0047     m_sensorNames[QStringLiteral("network/(?!all).*/downloadBits")] = i18n("[Group] Download Rate");
0048     m_sensorNames[QStringLiteral("network/(?!all).*/totalDownload")] = i18n("[Group] Total Downloaded");
0049     m_sensorNames[QStringLiteral("network/(?!all).*/upload")] = i18n("[Group] Upload Rate");
0050     m_sensorNames[QStringLiteral("network/(?!all).*/uploadBits")] = i18n("[Group] Upload Rate");
0051     m_sensorNames[QStringLiteral("network/(?!all).*/totalUpload")] = i18n("[Group] Total Uploaded");
0052 
0053     m_sensorNames[QStringLiteral("disk/(?!all).*/name")] = i18n("[Group] Name");
0054     m_sensorNames[QStringLiteral("disk/(?!all).*/total")] = i18n("[Group] Total Space");
0055     m_sensorNames[QStringLiteral("disk/(?!all).*/used")] = i18n("[Group] Used Space");
0056     m_sensorNames[QStringLiteral("disk/(?!all).*/free")] = i18n("[Group] Free Space");
0057     m_sensorNames[QStringLiteral("disk/(?!all).*/read")] = i18n("[Group] Read Rate");
0058     m_sensorNames[QStringLiteral("disk/(?!all).*/write")] = i18n("[Group] Write Rate");
0059     m_sensorNames[QStringLiteral("disk/(?!all).*/usedPercent")] = i18n("[Group] Percentage Used");
0060     m_sensorNames[QStringLiteral("disk/(?!all).*/freePercent")] = i18n("[Group] Percentage Free");
0061 
0062     m_segmentNames[QLatin1String("cpu\\d+")] = i18n("[Group] CPU");
0063     m_segmentNames[QLatin1String("disk/(?!all).*")] = i18n("[Group] Disk");
0064     m_segmentNames[QLatin1String("(?!all).*")] = i18n("[Group]");
0065 }
0066 
0067 QString SensorGroup::groupRegexForId(const QString &key)
0068 {
0069     QRegularExpression cpuExpr(QStringLiteral("cpu/cpu\\d+/(.*)"));
0070     QRegularExpression netExpr(QStringLiteral("network/(?!all).*/(.*)$"));
0071     QRegularExpression partitionsExpr(QStringLiteral("partitions/(?!all).*/(.*)$"));
0072     QRegularExpression diskExpr(QStringLiteral("disk/(?!all).*/(.*)"));
0073 
0074     if (key.contains(cpuExpr)) {
0075         QString expr = key;
0076         return expr.replace(cpuExpr, QStringLiteral("cpu/cpu\\d+/\\1"));
0077 
0078     } else if (key.contains(netExpr)) {
0079         QString expr = key;
0080         return expr.replace(netExpr, QStringLiteral("network/(?!all).*/\\1"));
0081 
0082     } else if (key.contains(partitionsExpr)) {
0083         QString expr = key;
0084         return expr.replace(partitionsExpr, QStringLiteral("partitions/(?!all).*/\\1"));
0085 
0086     } else if (key.contains(diskExpr)) {
0087         QString expr = key;
0088         return expr.replace(diskExpr, QStringLiteral("disk/(?!all).*/\\1"));
0089     }
0090 
0091     return QString();
0092 }
0093 
0094 QString SensorGroup::sensorNameForRegEx(const QString &expr)
0095 {
0096     if (m_sensorNames.contains(expr)) {
0097         return m_sensorNames.value(expr);
0098     }
0099 
0100     return expr;
0101 }
0102 
0103 QString SensorGroup::segmentNameForRegEx(const QString &expr)
0104 {
0105     if (m_segmentNames.contains(expr)) {
0106         return m_segmentNames.value(expr);
0107     }
0108 
0109     return expr;
0110 }
0111 
0112 } // namespace KSysGuard