From 8d652ae51ddb44b70d0a71257938d8146c1b9a7b Mon Sep 17 00:00:00 2001 From: Sopwit <131982697+Sopwit@users.noreply.github.com> Date: Sun, 22 Mar 2026 22:13:41 +0300 Subject: [PATCH 1/2] fix: stabilize driver page CI test --- tests/CMakeLists.txt | 3 +++ tests/test_driver_page.cpp | 17 ++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index ae3029b..983cb7d 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -128,3 +128,6 @@ target_link_libraries(test_driver_page PRIVATE ) add_test(NAME test_driver_page COMMAND test_driver_page) +set_tests_properties(test_driver_page PROPERTIES + ENVIRONMENT "QT_QPA_PLATFORM=offscreen;QT_QUICK_CONTROLS_STYLE=Basic" +) diff --git a/tests/test_driver_page.cpp b/tests/test_driver_page.cpp index 040b13f..9e52fe6 100644 --- a/tests/test_driver_page.cpp +++ b/tests/test_driver_page.cpp @@ -8,6 +8,7 @@ #include #include #include +#include class DetectorMock : public QObject { Q_OBJECT @@ -285,10 +286,6 @@ class TestDriverPage : public QObject { Q_OBJECT private slots: - void initTestCase() { - qputenv("QT_QPA_PLATFORM", QByteArrayLiteral("offscreen")); - } - void testDriverInstalledLocallyUsesDetectorVersion(); void testOperationRunningStillTracksBackendBusyAfterManualStateChanges(); @@ -450,5 +447,15 @@ void TestDriverPage:: QTRY_VERIFY(!page->property("operationRunning").toBool()); } -QTEST_MAIN(TestDriverPage) +int main(int argc, char **argv) { + qputenv("QT_QPA_PLATFORM", QByteArrayLiteral("offscreen")); + qputenv("QT_QUICK_CONTROLS_STYLE", QByteArrayLiteral("Basic")); + + QQuickStyle::setStyle(QStringLiteral("Basic")); + + QGuiApplication app(argc, argv); + TestDriverPage testCase; + return QTest::qExec(&testCase, argc, argv); +} + #include "test_driver_page.moc" From 26a9de85795eec3e9314e6f7c4c510ceacc2564c Mon Sep 17 00:00:00 2001 From: Sopwit <131982697+Sopwit@users.noreply.github.com> Date: Sun, 22 Mar 2026 22:21:15 +0300 Subject: [PATCH 2/2] style: normalize backend and cli formatting --- src/backend/monitor/cpumonitor.cpp | 12 +- src/backend/monitor/gpumonitor.cpp | 8 +- src/backend/monitor/rammonitor.cpp | 23 ++-- src/backend/nvidia/installer.cpp | 130 ++++++++++---------- src/backend/nvidia/updater.cpp | 129 ++++++++++--------- src/backend/system/languagemanager.cpp | 24 ++-- src/backend/system/languagemanager.h | 4 +- src/backend/system/uipreferencesmanager.cpp | 16 +-- src/cli/cli.cpp | 24 ++-- src/main.cpp | 5 +- 10 files changed, 191 insertions(+), 184 deletions(-) diff --git a/src/backend/monitor/cpumonitor.cpp b/src/backend/monitor/cpumonitor.cpp index 1f519fc..4d13269 100644 --- a/src/backend/monitor/cpumonitor.cpp +++ b/src/backend/monitor/cpumonitor.cpp @@ -58,9 +58,9 @@ int readFirstValidTemperature(const QStringList &paths) { int readCpuTemperatureFromThermalZones() { QDir thermalDir(pathOverrideOrDefault("RO_CONTROL_THERMAL_ROOT", QStringLiteral("/sys/class/thermal"))); - const QFileInfoList entries = thermalDir.entryInfoList( - {QStringLiteral("thermal_zone*")}, QDir::Dirs | QDir::NoDotAndDotDot, - QDir::Name); + const QFileInfoList entries = + thermalDir.entryInfoList({QStringLiteral("thermal_zone*")}, + QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); QStringList preferredPaths; QStringList fallbackPaths; @@ -88,9 +88,9 @@ int readCpuTemperatureFromThermalZones() { int readCpuTemperatureFromHwmon() { QDir hwmonDir(pathOverrideOrDefault("RO_CONTROL_HWMON_ROOT", QStringLiteral("/sys/class/hwmon"))); - const QFileInfoList entries = hwmonDir.entryInfoList( - {QStringLiteral("hwmon*")}, QDir::Dirs | QDir::NoDotAndDotDot, - QDir::Name); + const QFileInfoList entries = + hwmonDir.entryInfoList({QStringLiteral("hwmon*")}, + QDir::Dirs | QDir::NoDotAndDotDot, QDir::Name); QStringList preferredPaths; QStringList fallbackPaths; diff --git a/src/backend/monitor/gpumonitor.cpp b/src/backend/monitor/gpumonitor.cpp index e52e36c..eb2ad06 100644 --- a/src/backend/monitor/gpumonitor.cpp +++ b/src/backend/monitor/gpumonitor.cpp @@ -1,8 +1,8 @@ #include "gpumonitor.h" #include "system/commandrunner.h" -#include #include +#include namespace { @@ -21,7 +21,8 @@ bool parseMetricInt(const QString &field, int *value) { const QString normalized = normalizedMetricField(field); if (normalized.isEmpty() || normalized.compare(QStringLiteral("n/a"), Qt::CaseInsensitive) == 0 || - normalized.compare(QStringLiteral("not supported"), Qt::CaseInsensitive) == 0 || + normalized.compare(QStringLiteral("not supported"), + Qt::CaseInsensitive) == 0 || normalized.compare(QStringLiteral("unknown"), Qt::CaseInsensitive) == 0) { return false; } @@ -111,7 +112,8 @@ void GpuMonitor::refresh() { return; } - const int usagePercent = (usedAvailable && totalAvailable && nextTotal > 0) + const int usagePercent = + (usedAvailable && totalAvailable && nextTotal > 0) ? std::clamp(static_cast((static_cast(nextUsed) / static_cast(nextTotal)) * 100.0), diff --git a/src/backend/monitor/rammonitor.cpp b/src/backend/monitor/rammonitor.cpp index 8eac584..c195032 100644 --- a/src/backend/monitor/rammonitor.cpp +++ b/src/backend/monitor/rammonitor.cpp @@ -17,13 +17,15 @@ struct RamSnapshot { }; QString meminfoPath() { - const QString overridePath = qEnvironmentVariable("RO_CONTROL_MEMINFO_PATH") - .trimmed(); - return overridePath.isEmpty() ? QStringLiteral("/proc/meminfo") : overridePath; + const QString overridePath = + qEnvironmentVariable("RO_CONTROL_MEMINFO_PATH").trimmed(); + return overridePath.isEmpty() ? QStringLiteral("/proc/meminfo") + : overridePath; } RamSnapshot buildSnapshot(qint64 memTotalKiB, qint64 memAvailableKiB) { - if (memTotalKiB <= 0 || memAvailableKiB < 0 || memAvailableKiB > memTotalKiB) { + if (memTotalKiB <= 0 || memAvailableKiB < 0 || + memAvailableKiB > memTotalKiB) { return {}; } @@ -48,8 +50,8 @@ RamSnapshot readSnapshotFromFree() { return {}; } - const QStringList lines = result.stdout.split(QLatin1Char('\n'), - Qt::SkipEmptyParts); + const QStringList lines = + result.stdout.split(QLatin1Char('\n'), Qt::SkipEmptyParts); for (const QString &line : lines) { if (!line.startsWith(QStringLiteral("Mem:"))) { continue; @@ -88,10 +90,11 @@ RamSnapshot readSnapshotFromFree() { snapshot.valid = true; snapshot.totalMiB = totalMiB; snapshot.usedMiB = usedMiB; - snapshot.usagePercent = std::clamp( - static_cast((static_cast(usedMiB) / - static_cast(totalMiB)) * 100.0), - 0, 100); + snapshot.usagePercent = + std::clamp(static_cast((static_cast(usedMiB) / + static_cast(totalMiB)) * + 100.0), + 0, 100); return snapshot; } diff --git a/src/backend/nvidia/installer.cpp b/src/backend/nvidia/installer.cpp index c10a024..0c728bf 100644 --- a/src/backend/nvidia/installer.cpp +++ b/src/backend/nvidia/installer.cpp @@ -64,46 +64,44 @@ void emitProgressAsync(const QPointer &guard, void attachRunnerLogging(CommandRunner &runner, const QPointer &guard) { - QObject::connect(&runner, &CommandRunner::outputLine, guard, - [guard](const QString &message) { - emitProgressAsync(guard, message); - }); + QObject::connect( + &runner, &CommandRunner::outputLine, guard, + [guard](const QString &message) { emitProgressAsync(guard, message); }); - QObject::connect(&runner, &CommandRunner::errorLine, guard, - [guard](const QString &message) { - emitProgressAsync(guard, message); - }); + QObject::connect( + &runner, &CommandRunner::errorLine, guard, + [guard](const QString &message) { emitProgressAsync(guard, message); }); QObject::connect( &runner, &CommandRunner::commandStarted, guard, [guard](const QString &program, const QStringList &args, int attempt) { QStringList visibleArgs = args; if (!visibleArgs.isEmpty() && - visibleArgs.constFirst().contains(QStringLiteral("ro-control-helper"))) { + visibleArgs.constFirst().contains( + QStringLiteral("ro-control-helper"))) { visibleArgs.removeFirst(); } - const QString commandLine = - QStringLiteral("$ %1 %2") - .arg(program, visibleArgs.join(QLatin1Char(' ')).trimmed()); + const QString commandLine = QStringLiteral("$ %1 %2").arg( + program, visibleArgs.join(QLatin1Char(' ')).trimmed()); emitProgressAsync( guard, NvidiaInstaller::tr("Starting command (attempt %1): %2") .arg(attempt) .arg(commandLine.trimmed())); }); - QObject::connect(&runner, &CommandRunner::commandFinished, guard, - [guard](const QString &program, int exitCode, int attempt, - int elapsedMs) { - emitProgressAsync( - guard, - NvidiaInstaller::tr( - "Command finished (attempt %1, exit %2, %3 ms): %4") - .arg(attempt) - .arg(exitCode) - .arg(elapsedMs) - .arg(program)); - }); + QObject::connect( + &runner, &CommandRunner::commandFinished, guard, + [guard](const QString &program, int exitCode, int attempt, + int elapsedMs) { + emitProgressAsync( + guard, NvidiaInstaller::tr( + "Command finished (attempt %1, exit %2, %3 ms): %4") + .arg(attempt) + .arg(exitCode) + .arg(elapsedMs) + .arg(program)); + }); } } // namespace @@ -163,9 +161,9 @@ void NvidiaInstaller::installProprietary(bool agreementAccepted) { refreshProprietaryAgreement(); if (m_proprietaryAgreementRequired && !agreementAccepted) { - emit installFinished(false, - tr("NVIDIA license review confirmation is required before " - "installation.")); + emit installFinished( + false, tr("NVIDIA license review confirmation is required before " + "installation.")); return; } @@ -178,8 +176,8 @@ void NvidiaInstaller::installProprietary(bool agreementAccepted) { CommandRunner runner; attachRunnerLogging(runner, guard); - emitProgressAsync(guard, - NvidiaInstaller::tr("Checking RPM Fusion repositories...")); + emitProgressAsync( + guard, NvidiaInstaller::tr("Checking RPM Fusion repositories...")); CommandRunner rpmRunner; const auto fedoraResult = @@ -193,7 +191,8 @@ void NvidiaInstaller::installProprietary(bool agreementAccepted) { [guard]() { if (guard) { emit guard->installFinished( - false, NvidiaInstaller::tr("Platform version could not be detected.")); + false, NvidiaInstaller::tr( + "Platform version could not be detected.")); } }, Qt::QueuedConnection); @@ -226,8 +225,9 @@ void NvidiaInstaller::installProprietary(bool agreementAccepted) { } emitProgressAsync( - guard, NvidiaInstaller::tr( - "Installing the proprietary NVIDIA driver (akmod-nvidia)...")); + guard, + NvidiaInstaller::tr( + "Installing the proprietary NVIDIA driver (akmod-nvidia)...")); QStringList installArgs{QStringLiteral("install"), QStringLiteral("-y"), QStringLiteral("--refresh"), @@ -237,8 +237,8 @@ void NvidiaInstaller::installProprietary(bool agreementAccepted) { result = runner.runAsRoot(QStringLiteral("dnf"), installArgs); if (!result.success()) { - const QString error = - NvidiaInstaller::tr("Installation failed: ") + result.stderr.trimmed(); + const QString error = NvidiaInstaller::tr("Installation failed: ") + + result.stderr.trimmed(); QMetaObject::invokeMethod( guard, [guard, error]() { @@ -253,7 +253,8 @@ void NvidiaInstaller::installProprietary(bool agreementAccepted) { emitProgressAsync( guard, NvidiaInstaller::tr("Building the kernel module (akmods --force)...")); - result = runner.runAsRoot(QStringLiteral("akmods"), {QStringLiteral("--force")}); + result = + runner.runAsRoot(QStringLiteral("akmods"), {QStringLiteral("--force")}); if (!result.success()) { const QString error = NvidiaInstaller::tr("Kernel module build failed: ") + @@ -289,8 +290,8 @@ void NvidiaInstaller::installProprietary(bool agreementAccepted) { [guard]() { if (guard) { emit guard->installFinished( - true, - NvidiaInstaller::tr("The proprietary NVIDIA driver was installed " + true, NvidiaInstaller::tr( + "The proprietary NVIDIA driver was installed " "successfully. Please restart the system.")); } }, @@ -308,8 +309,8 @@ void NvidiaInstaller::installOpenSource() { CommandRunner runner; attachRunnerLogging(runner, guard); - emitProgressAsync( - guard, NvidiaInstaller::tr("Switching to NVIDIA open kernel modules...")); + emitProgressAsync(guard, NvidiaInstaller::tr( + "Switching to NVIDIA open kernel modules...")); auto result = runner.runAsRoot( QStringLiteral("dnf"), @@ -318,7 +319,8 @@ void NvidiaInstaller::installOpenSource() { if (!result.success()) { const QString error = - NvidiaInstaller::tr("Failed to remove conflicting NVIDIA kernel packages: ") + + NvidiaInstaller::tr( + "Failed to remove conflicting NVIDIA kernel packages: ") + commandError(result); QMetaObject::invokeMethod( guard, @@ -335,13 +337,14 @@ void NvidiaInstaller::installOpenSource() { QStringLiteral("--refresh"), QStringLiteral("--best"), QStringLiteral("--allowerasing")}; - installArgs - << buildDriverInstallTargets(QStringLiteral("akmod-nvidia-open")); + installArgs << buildDriverInstallTargets( + QStringLiteral("akmod-nvidia-open")); result = runner.runAsRoot(QStringLiteral("dnf"), installArgs); if (!result.success()) { const QString error = - NvidiaInstaller::tr("Open NVIDIA kernel module installation failed: ") + + NvidiaInstaller::tr( + "Open NVIDIA kernel module installation failed: ") + commandError(result); QMetaObject::invokeMethod( guard, @@ -357,8 +360,8 @@ void NvidiaInstaller::installOpenSource() { emitProgressAsync( guard, NvidiaInstaller::tr("Building the kernel module (akmods --force)...")); - result = runner.runAsRoot(QStringLiteral("akmods"), - {QStringLiteral("--force")}); + result = + runner.runAsRoot(QStringLiteral("akmods"), {QStringLiteral("--force")}); if (!result.success()) { const QString error = NvidiaInstaller::tr("Kernel module build failed: ") + @@ -395,9 +398,9 @@ void NvidiaInstaller::installOpenSource() { [guard]() { if (guard) { emit guard->installFinished( - true, - NvidiaInstaller::tr("NVIDIA open kernel modules were installed " - "successfully. Please restart the system.")); + true, NvidiaInstaller::tr( + "NVIDIA open kernel modules were installed " + "successfully. Please restart the system.")); } }, Qt::QueuedConnection); @@ -420,14 +423,14 @@ void NvidiaInstaller::remove() { const auto result = runner.runAsRoot( QStringLiteral("dnf"), {QStringLiteral("remove"), QStringLiteral("-y"), - QStringLiteral("akmod-nvidia"), - QStringLiteral("akmod-nvidia-open"), + QStringLiteral("akmod-nvidia"), QStringLiteral("akmod-nvidia-open"), QStringLiteral("xorg-x11-drv-nvidia*")}); const bool success = result.success(); const QString message = - success ? NvidiaInstaller::tr("Driver removed successfully.") - : NvidiaInstaller::tr("Removal failed: ") + result.stderr.trimmed(); + success + ? NvidiaInstaller::tr("Driver removed successfully.") + : NvidiaInstaller::tr("Removal failed: ") + result.stderr.trimmed(); QMetaObject::invokeMethod( guard, [guard, success, message]() { @@ -449,18 +452,18 @@ void NvidiaInstaller::deepClean() { CommandRunner runner; attachRunnerLogging(runner, guard); - emitProgressAsync(guard, - NvidiaInstaller::tr("Cleaning legacy driver leftovers...")); + emitProgressAsync( + guard, NvidiaInstaller::tr("Cleaning legacy driver leftovers...")); - const auto removeResult = runner.runAsRoot( - QStringLiteral("dnf"), - {QStringLiteral("remove"), QStringLiteral("-y"), - QStringLiteral("*nvidia*"), QStringLiteral("*akmod*"), - QStringLiteral("*nvidia-open*")}); + const auto removeResult = + runner.runAsRoot(QStringLiteral("dnf"), + {QStringLiteral("remove"), QStringLiteral("-y"), + QStringLiteral("*nvidia*"), QStringLiteral("*akmod*"), + QStringLiteral("*nvidia-open*")}); if (!removeResult.success()) { - const QString error = - NvidiaInstaller::tr("Deep clean failed: ") + removeResult.stderr.trimmed(); + const QString error = NvidiaInstaller::tr("Deep clean failed: ") + + removeResult.stderr.trimmed(); QMetaObject::invokeMethod( guard, [guard, error]() { @@ -493,7 +496,8 @@ void NvidiaInstaller::deepClean() { guard, [guard]() { if (guard) { - emit guard->progressMessage(NvidiaInstaller::tr("Deep clean completed.")); + emit guard->progressMessage( + NvidiaInstaller::tr("Deep clean completed.")); emit guard->removeFinished( true, NvidiaInstaller::tr("Legacy NVIDIA cleanup completed.")); } @@ -502,8 +506,6 @@ void NvidiaInstaller::deepClean() { }); } - - bool NvidiaInstaller::applySessionSpecificSetup(CommandRunner &runner, const QString &sessionType, QString *errorMessage) { diff --git a/src/backend/nvidia/updater.cpp b/src/backend/nvidia/updater.cpp index 60da4a3..ffd843c 100644 --- a/src/backend/nvidia/updater.cpp +++ b/src/backend/nvidia/updater.cpp @@ -1,7 +1,7 @@ #include "updater.h" #include "detector.h" -#include "system/commandrunner.h" #include "system/capabilityprobe.h" +#include "system/commandrunner.h" #include "system/sessionutil.h" #include "versionparser.h" @@ -73,9 +73,9 @@ QString detectInstalledKernelPackageName() { } CommandRunner runner; - const auto openResult = runner.run( - QStringLiteral("rpm"), - {QStringLiteral("-q"), QStringLiteral("akmod-nvidia-open")}); + const auto openResult = + runner.run(QStringLiteral("rpm"), + {QStringLiteral("-q"), QStringLiteral("akmod-nvidia-open")}); if (openResult.success()) { return QStringLiteral("akmod-nvidia-open"); } @@ -114,18 +114,18 @@ UpdateStatusSnapshot collectUpdateStatus() { const auto listResult = runner.run(QStringLiteral("dnf"), {QStringLiteral("--refresh"), QStringLiteral("list"), - QStringLiteral("--showduplicates"), - kernelPackageName}); + QStringLiteral("--showduplicates"), kernelPackageName}); if (listResult.success()) { snapshot.availableVersions = - NvidiaVersionParser::parseAvailablePackageVersions( - listResult.stdout, kernelPackageName); + NvidiaVersionParser::parseAvailablePackageVersions(listResult.stdout, + kernelPackageName); snapshot.remoteCatalogAvailable = !snapshot.availableVersions.isEmpty(); } snapshot.latestVersion = queryLatestRemoteVersion(runner, kernelPackageName); - if (snapshot.latestVersion.isEmpty() && !snapshot.availableVersions.isEmpty()) { + if (snapshot.latestVersion.isEmpty() && + !snapshot.availableVersions.isEmpty()) { snapshot.latestVersion = snapshot.availableVersions.constLast(); } @@ -134,25 +134,27 @@ UpdateStatusSnapshot collectUpdateStatus() { snapshot.updateAvailable = true; snapshot.message = snapshot.latestVersion.isEmpty() - ? NvidiaUpdater::tr( - "Online NVIDIA packages were found. You can download and install the driver now.") + ? NvidiaUpdater::tr("Online NVIDIA packages were found. You can " + "download and install the driver now.") : NvidiaUpdater::tr( "Online NVIDIA driver found. Latest remote version: %1") .arg(snapshot.latestVersion); } else { - snapshot.message = NvidiaUpdater::tr( - "No online NVIDIA package catalog was found. RPM Fusion may not be configured yet."); + snapshot.message = + NvidiaUpdater::tr("No online NVIDIA package catalog was found. RPM " + "Fusion may not be configured yet."); } return snapshot; } const auto checkResult = - runner.run(QStringLiteral("dnf"), {QStringLiteral("check-update"), - kernelPackageName}); + runner.run(QStringLiteral("dnf"), + {QStringLiteral("check-update"), kernelPackageName}); if (checkResult.exitCode == 100) { - const QString checkUpdateVersion = NvidiaVersionParser::parseCheckUpdateVersion( - checkResult.stdout, kernelPackageName); + const QString checkUpdateVersion = + NvidiaVersionParser::parseCheckUpdateVersion(checkResult.stdout, + kernelPackageName); if (!checkUpdateVersion.isEmpty()) { snapshot.latestVersion = checkUpdateVersion; } @@ -160,10 +162,10 @@ UpdateStatusSnapshot collectUpdateStatus() { snapshot.message = snapshot.latestVersion.isEmpty() ? NvidiaUpdater::tr("Update found (version details unavailable).") - : NvidiaUpdater::tr("Update found: %1") - .arg(snapshot.latestVersion); + : NvidiaUpdater::tr("Update found: %1").arg(snapshot.latestVersion); } else if (checkResult.exitCode == 0) { - snapshot.message = NvidiaUpdater::tr("Driver is up to date. No new version found."); + snapshot.message = + NvidiaUpdater::tr("Driver is up to date. No new version found."); } else { snapshot.message = NvidiaUpdater::tr("Update check failed: %1") .arg(checkResult.stderr.trimmed().isEmpty() @@ -188,46 +190,44 @@ void emitProgressAsync(const QPointer &guard, void attachRunnerLogging(CommandRunner &runner, const QPointer &guard) { - QObject::connect(&runner, &CommandRunner::outputLine, guard, - [guard](const QString &message) { - emitProgressAsync(guard, message); - }); + QObject::connect( + &runner, &CommandRunner::outputLine, guard, + [guard](const QString &message) { emitProgressAsync(guard, message); }); - QObject::connect(&runner, &CommandRunner::errorLine, guard, - [guard](const QString &message) { - emitProgressAsync(guard, message); - }); + QObject::connect( + &runner, &CommandRunner::errorLine, guard, + [guard](const QString &message) { emitProgressAsync(guard, message); }); QObject::connect( &runner, &CommandRunner::commandStarted, guard, [guard](const QString &program, const QStringList &args, int attempt) { QStringList visibleArgs = args; if (!visibleArgs.isEmpty() && - visibleArgs.constFirst().contains(QStringLiteral("ro-control-helper"))) { + visibleArgs.constFirst().contains( + QStringLiteral("ro-control-helper"))) { visibleArgs.removeFirst(); } - const QString commandLine = - QStringLiteral("$ %1 %2") - .arg(program, visibleArgs.join(QLatin1Char(' ')).trimmed()); + const QString commandLine = QStringLiteral("$ %1 %2").arg( + program, visibleArgs.join(QLatin1Char(' ')).trimmed()); + emitProgressAsync(guard, + NvidiaUpdater::tr("Starting command (attempt %1): %2") + .arg(attempt) + .arg(commandLine.trimmed())); + }); + + QObject::connect( + &runner, &CommandRunner::commandFinished, guard, + [guard](const QString &program, int exitCode, int attempt, + int elapsedMs) { emitProgressAsync( - guard, NvidiaUpdater::tr("Starting command (attempt %1): %2") + guard, NvidiaUpdater::tr( + "Command finished (attempt %1, exit %2, %3 ms): %4") .arg(attempt) - .arg(commandLine.trimmed())); + .arg(exitCode) + .arg(elapsedMs) + .arg(program)); }); - - QObject::connect(&runner, &CommandRunner::commandFinished, guard, - [guard](const QString &program, int exitCode, int attempt, - int elapsedMs) { - emitProgressAsync( - guard, - NvidiaUpdater::tr( - "Command finished (attempt %1, exit %2, %3 ms): %4") - .arg(attempt) - .arg(exitCode) - .arg(elapsedMs) - .arg(program)); - }); } } // namespace @@ -245,8 +245,7 @@ void NvidiaUpdater::setBusy(bool busy) { void NvidiaUpdater::runAsyncTask(const std::function &task) { if (m_busy) { - emit progressMessage( - tr("Another driver operation is already running.")); + emit progressMessage(tr("Another driver operation is already running.")); return; } @@ -278,7 +277,8 @@ void NvidiaUpdater::setAvailableVersions(const QStringList &versions) { emit availableVersionsChanged(); } -bool NvidiaUpdater::transactionChanged(const CommandRunner::Result &result) const { +bool NvidiaUpdater::transactionChanged( + const CommandRunner::Result &result) const { const QString output = normalizedTransactionOutput(result); if (output.contains(QStringLiteral("nothing to do")) || @@ -321,9 +321,9 @@ QStringList NvidiaUpdater::buildTransactionArguments( const QString &sessionType, const QString &kernelPackageName) const { const QString normalizedRequestedVersion = requestedVersion.trimmed(); const QString normalizedInstalledVersion = installedVersion.trimmed(); - const QString targetVersion = - normalizedRequestedVersion.isEmpty() ? m_latestVersion.trimmed() - : normalizedRequestedVersion; + const QString targetVersion = normalizedRequestedVersion.isEmpty() + ? m_latestVersion.trimmed() + : normalizedRequestedVersion; QStringList args; if (normalizedInstalledVersion.isEmpty()) { @@ -368,9 +368,8 @@ bool NvidiaUpdater::finalizeDriverChange(CommandRunner &runner, QStringLiteral("--args=nvidia-drm.modeset=1")}); if (!result.success()) { if (errorMessage != nullptr) { - *errorMessage = - tr("Failed to update the Wayland kernel parameter: ") + - commandError(result, tr("unknown error")); + *errorMessage = tr("Failed to update the Wayland kernel parameter: ") + + commandError(result, tr("unknown error")); } return false; } @@ -481,8 +480,8 @@ void NvidiaUpdater::applyVersion(const QString &version) { [guard]() { if (guard) { emit guard->updateFinished( - false, - NvidiaUpdater::tr("Selected version not found in the repository.")); + false, NvidiaUpdater::tr( + "Selected version not found in the repository.")); } }, Qt::QueuedConnection); @@ -497,9 +496,8 @@ void NvidiaUpdater::applyVersion(const QString &version) { "Switching NVIDIA driver to selected version: %1") .arg(trimmedVersion)); - const QStringList args = - guard->buildTransactionArguments(trimmedVersion, installedVersion, - sessionType, kernelPackageName); + const QStringList args = guard->buildTransactionArguments( + trimmedVersion, installedVersion, sessionType, kernelPackageName); auto result = runner.runAsRoot(QStringLiteral("dnf"), args); if (!result.success()) { @@ -570,12 +568,11 @@ void NvidiaUpdater::applyVersion(const QString &version) { trimmedVersion.isEmpty() ? (installedVersion.isEmpty() ? NvidiaUpdater::tr("Latest version installed successfully. " - "Please restart the system.") + "Please restart the system.") : NvidiaUpdater::tr("Driver updated successfully. " - "Please restart the system.")) - : NvidiaUpdater::tr( - "Selected version applied successfully. " - "Please restart the system."); + "Please restart the system.")) + : NvidiaUpdater::tr("Selected version applied successfully. " + "Please restart the system."); QMetaObject::invokeMethod( guard, diff --git a/src/backend/system/languagemanager.cpp b/src/backend/system/languagemanager.cpp index 764be87..6591a69 100644 --- a/src/backend/system/languagemanager.cpp +++ b/src/backend/system/languagemanager.cpp @@ -26,8 +26,9 @@ constexpr LanguageEntry kSupportedLanguages[] = { } // namespace -LanguageManager::LanguageManager(QCoreApplication *application, QQmlEngine *engine, - QTranslator *translator, QObject *parent) +LanguageManager::LanguageManager(QCoreApplication *application, + QQmlEngine *engine, QTranslator *translator, + QObject *parent) : QObject(parent), m_application(application), m_engine(engine), m_translator(translator) { QSettings settings; @@ -45,9 +46,9 @@ QString LanguageManager::effectiveLanguage() const { QString LanguageManager::currentLanguageLabel() const { if (m_currentLanguage == QStringLiteral("system")) { - return QStringLiteral("%1 (%2)") - .arg(displayNameForLanguage(m_currentLanguage), - displayNameForLanguage(effectiveLanguage())); + return QStringLiteral("%1 (%2)").arg( + displayNameForLanguage(m_currentLanguage), + displayNameForLanguage(effectiveLanguage())); } return displayNameForLanguage(m_currentLanguage); @@ -87,8 +88,8 @@ void LanguageManager::setCurrentLanguage(const QString &languageCode) { emit currentLanguageChanged(); } -QString LanguageManager::displayNameForLanguage( - const QString &languageCode) const { +QString +LanguageManager::displayNameForLanguage(const QString &languageCode) const { const QString normalizedLanguage = normalizeLanguageCode(languageCode); for (const auto &entry : kSupportedLanguages) { if (QString::fromLatin1(entry.code) == normalizedLanguage) { @@ -99,7 +100,8 @@ QString LanguageManager::displayNameForLanguage( return normalizedLanguage; } -QString LanguageManager::normalizeLanguageCode(const QString &languageCode) const { +QString +LanguageManager::normalizeLanguageCode(const QString &languageCode) const { const QString normalizedLanguage = languageCode.trimmed().toLower(); for (const auto &entry : kSupportedLanguages) { if (QString::fromLatin1(entry.code) == normalizedLanguage) { @@ -114,14 +116,16 @@ QString LanguageManager::systemLanguageCode() const { return QLocale::system().name().section(QLatin1Char('_'), 0, 0).toLower(); } -QString LanguageManager::effectiveLanguageCode(const QString &languageCode) const { +QString +LanguageManager::effectiveLanguageCode(const QString &languageCode) const { const QString normalizedLanguage = normalizeLanguageCode(languageCode); return normalizedLanguage == QStringLiteral("system") ? systemLanguageCode() : normalizedLanguage; } bool LanguageManager::loadLanguage(const QString &languageCode) { - if (m_application == nullptr || m_engine == nullptr || m_translator == nullptr) { + if (m_application == nullptr || m_engine == nullptr || + m_translator == nullptr) { return false; } diff --git a/src/backend/system/languagemanager.h b/src/backend/system/languagemanager.h index 6651304..3aded0f 100644 --- a/src/backend/system/languagemanager.h +++ b/src/backend/system/languagemanager.h @@ -12,8 +12,8 @@ class QTranslator; class LanguageManager : public QObject { Q_OBJECT - Q_PROPERTY(QString currentLanguage READ currentLanguage WRITE setCurrentLanguage - NOTIFY currentLanguageChanged) + Q_PROPERTY(QString currentLanguage READ currentLanguage WRITE + setCurrentLanguage NOTIFY currentLanguageChanged) Q_PROPERTY(QString effectiveLanguage READ effectiveLanguage NOTIFY currentLanguageChanged) Q_PROPERTY(QString currentLanguageLabel READ currentLanguageLabel NOTIFY diff --git a/src/backend/system/uipreferencesmanager.cpp b/src/backend/system/uipreferencesmanager.cpp index 5f27e2a..d6437c7 100644 --- a/src/backend/system/uipreferencesmanager.cpp +++ b/src/backend/system/uipreferencesmanager.cpp @@ -24,10 +24,9 @@ UiPreferencesManager::UiPreferencesManager(QObject *parent) : QObject(parent) { settings.value(QStringLiteral("ui/themeMode"), m_themeMode).toString()); m_compactMode = settings.value(QStringLiteral("ui/compactMode"), m_compactMode).toBool(); - m_showAdvancedInfo = settings - .value(QStringLiteral("ui/showAdvancedInfo"), - m_showAdvancedInfo) - .toBool(); + m_showAdvancedInfo = + settings.value(QStringLiteral("ui/showAdvancedInfo"), m_showAdvancedInfo) + .toBool(); } QString UiPreferencesManager::themeMode() const { return m_themeMode; } @@ -37,9 +36,9 @@ QVariantList UiPreferencesManager::availableThemeModes() const { for (const auto &entry : kThemeModes) { QVariantMap mode; mode.insert(QStringLiteral("code"), QString::fromLatin1(entry.code)); - mode.insert(QStringLiteral("label"), - QCoreApplication::translate("UiPreferencesManager", - entry.label)); + mode.insert( + QStringLiteral("label"), + QCoreApplication::translate("UiPreferencesManager", entry.label)); modes.append(mode); } return modes; @@ -88,7 +87,8 @@ void UiPreferencesManager::resetToDefaults() { setShowAdvancedInfo(true); } -QString UiPreferencesManager::normalizeThemeMode(const QString &themeMode) const { +QString +UiPreferencesManager::normalizeThemeMode(const QString &themeMode) const { const QString normalizedThemeMode = themeMode.trimmed().toLower(); for (const auto &entry : kThemeModes) { if (normalizedThemeMode == QLatin1String(entry.code)) { diff --git a/src/cli/cli.cpp b/src/cli/cli.cpp index 927be42..c09974e 100644 --- a/src/cli/cli.cpp +++ b/src/cli/cli.cpp @@ -116,8 +116,7 @@ void configureParser(QCommandLineParser &parser, const QString &applicationName, QStringLiteral("Use the NVIDIA open kernel module install path."))); parser.addOption(QCommandLineOption( {QStringLiteral("accept-license")}, - QStringLiteral( - "Confirm that the NVIDIA license was reviewed."))); + QStringLiteral("Confirm that the NVIDIA license was reviewed."))); parser.addPositionalArgument(QStringLiteral("command"), QStringLiteral("CLI command to execute.")); parser.addPositionalArgument( @@ -350,17 +349,16 @@ DiagnosticsSnapshot collectDiagnostics(const QString &applicationName, NvidiaUpdater updater; QEventLoop updaterLoop; bool updaterStarted = false; - QObject::connect(&updater, &NvidiaUpdater::busyChanged, &updater, - [&]() { - if (updater.busy()) { - updaterStarted = true; - return; - } - - if (updaterStarted) { - updaterLoop.quit(); - } - }); + QObject::connect(&updater, &NvidiaUpdater::busyChanged, &updater, [&]() { + if (updater.busy()) { + updaterStarted = true; + return; + } + + if (updaterStarted) { + updaterLoop.quit(); + } + }); updater.checkForUpdate(); if (updater.busy()) { updaterLoop.exec(); diff --git a/src/main.cpp b/src/main.cpp index b0ae8bf..2447477 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -10,10 +10,10 @@ #include #include #include +#include #include #include #include -#include #include "backend/monitor/cpumonitor.h" #include "backend/monitor/gpumonitor.h" @@ -174,7 +174,8 @@ void configureGuiGraphicsEnvironment() { // NVIDIA on Fedora/X11 is generally more stable through the GLX path than // the EGL/DRI2 integration that can emit startup errors. - if (sessionType == "x11" && qEnvironmentVariableIsEmpty("QT_XCB_GL_INTEGRATION")) { + if (sessionType == "x11" && + qEnvironmentVariableIsEmpty("QT_XCB_GL_INTEGRATION")) { qputenv("QT_XCB_GL_INTEGRATION", QByteArrayLiteral("glx")); }