From 6e946bf872259330678b5296317c045dc276e3fe Mon Sep 17 00:00:00 2001 From: phosit Date: Sat, 25 Apr 2020 18:44:48 +0200 Subject: [PATCH] Add kelvin-scale --- include/modules/temperature.hpp | 4 ++-- src/modules/temperature.cpp | 12 +++++++----- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/include/modules/temperature.hpp b/include/modules/temperature.hpp index 9a7ecc32..9f071a33 100644 --- a/include/modules/temperature.hpp +++ b/include/modules/temperature.hpp @@ -14,8 +14,8 @@ class Temperature : public ALabel { auto update() -> void; private: - std::tuple getTemperature(); - bool isCritical(uint16_t); + float getTemperature(); + bool isCritical(uint16_t); std::string file_path_; util::SleeperThread thread_; diff --git a/src/modules/temperature.cpp b/src/modules/temperature.cpp index d8307d70..bf0bd1c1 100644 --- a/src/modules/temperature.cpp +++ b/src/modules/temperature.cpp @@ -22,7 +22,10 @@ waybar::modules::Temperature::Temperature(const std::string& id, const Json::Val } auto waybar::modules::Temperature::update() -> void { - auto [temperature_c, temperature_f] = getTemperature(); + auto temperature = getTemperature(); + uint16_t temperature_c = std::round(temperature); + uint16_t temperature_f = std::round(temperature * 1.8 + 32); + uint16_t temperature_k = std::round(temperature + 273.15); auto critical = isCritical(temperature_c); auto format = format_; if (critical) { @@ -35,12 +38,13 @@ auto waybar::modules::Temperature::update() -> void { label_.set_markup(fmt::format(format, fmt::arg("temperatureC", temperature_c), fmt::arg("temperatureF", temperature_f), + fmt::arg("temperatureK", temperature_k), fmt::arg("icon", getIcon(temperature_c, "", max_temp)))); // Call parent update ALabel::update(); } -std::tuple waybar::modules::Temperature::getTemperature() { +float waybar::modules::Temperature::getTemperature() { std::ifstream temp(file_path_); if (!temp.is_open()) { throw std::runtime_error("Can't open " + file_path_); @@ -51,9 +55,7 @@ std::tuple waybar::modules::Temperature::getTemperature() { } temp.close(); auto temperature_c = std::strtol(line.c_str(), nullptr, 10) / 1000.0; - auto temperature_f = temperature_c * 1.8 + 32; - std::tuple temperatures(std::round(temperature_c), std::round(temperature_f)); - return temperatures; + return temperature_c; } bool waybar::modules::Temperature::isCritical(uint16_t temperature_c) {