Publish Framework tray enhancements and idle fingerprint retry

This commit is contained in:
ajp_anton
2026-09-20 20:48:34 +00:00
parent 61ef199667
commit ddb912d4ba
25 changed files with 654 additions and 61 deletions
+13 -5
View File
@@ -1,5 +1,6 @@
// SPDX-License-Identifier: MIT
#include "tooltip.h"
#include "readingformat.h"
#include <cmath>
#include <algorithm>
@@ -15,9 +16,9 @@ QVector<TooltipSensor> tooltipSensors(const QVector<Sensor> &sensors)
}
return result;
}
bool tooltipEnabled(const QVariantMap &settings, const QString &key)
bool tooltipEnabled(const QVariantMap &settings, const QString &key, bool fallback)
{
return settings.value("tray/hover/" + key, true).toBool();
return settings.value("tray/hover/" + key, fallback).toBool();
}
int tooltipAppCount(const QVariantMap &settings)
{
@@ -36,7 +37,7 @@ QString batteryTooltip(const QVariantMap &battery, int limit, const QVariantMap
};
text += " · " + energy("remainingMWh") + " mWh / " + energy("fullMWh") + " mWh";
const auto watts = batteryRate(battery);
text += "\n\u2003" + (watts ? (*watts > 0 ? "+" : "") + QString::number(*watts, 'f', 1) + " W" : "— W");
text += "\n\u2003" + (watts ? (*watts > 0 ? "+" : "") + formatReading(*watts) + " W" : "— W");
const bool charging = battery["state"] == "Charging", discharging = battery["state"] == "Discharging";
double seconds = 0;
bool approximate = false;
@@ -60,7 +61,8 @@ QString batteryTooltip(const QVariantMap &battery, int limit, const QVariantMap
return text;
}
QString trayTooltip(const QVariantMap &settings, const QMap<QString, double> &values,
const QVector<TooltipSensor> &temperatures, const QString &battery, const QStringList &topApps)
const QVector<TooltipSensor> &temperatures, const QString &battery, const QStringList &topApps,
const QVector<Sensor> &powerSensors)
{
const auto reading = [&](const QString &id, int decimals) {
const auto it = values.constFind(id);
@@ -75,10 +77,16 @@ QString trayTooltip(const QVariantMap &settings, const QMap<QString, double> &va
}
if (tooltipEnabled(settings, "battery")) lines << battery;
if (tooltipEnabled(settings, "fan")) lines << "Fan speed: " + reading("fan", 0) + " RPM (" + reading("fan-duty", 0) + " %)";
QStringList power;
for (const auto &sensor : powerSensors)
if (tooltipEnabled(settings, sensor.id, false))
power << sensor.name + ": " + formatReading(values.value(sensor.id, NAN)) + " W";
if (power.size() > 1) lines << "Power consumption:";
for (const auto &line : power) lines << (power.size() > 1 ? "\u2003" : "") + line;
QStringList temps;
for (const auto &sensor : temperatures)
if (!sensor.id.isEmpty() && tooltipEnabled(settings, "temperature/" + sensor.key))
temps << sensor.name + " " + reading(sensor.id, 0) + "°C";
temps << sensor.name + " " + formatReading(values.value(sensor.id, NAN)) + "°C";
if (temps.size() > 1) lines << "Temperatures:";
for (const auto &temp : temps) lines << (temps.size() > 1 ? "\u2003" : "") + temp;
return lines.join('\n');