123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- /*
- htop - BatteryMeter.c
- (C) 2004-2011 Hisham H. Muhammad
- Released under the GNU GPLv2+, see the COPYING file
- in the source distribution for its full text.
- This meter written by Ian P. Hands (iphands@gmail.com, ihands@redhat.com).
- */
- #include "config.h" // IWYU pragma: keep
- #include "BatteryMeter.h"
- #include <math.h>
- #include "CRT.h"
- #include "Macros.h"
- #include "Object.h"
- #include "Platform.h"
- #include "XUtils.h"
- static const int BatteryMeter_attributes[] = {
- BATTERY
- };
- static void BatteryMeter_updateValues(Meter* this) {
- ACPresence isOnAC;
- double percent;
- Platform_getBattery(&percent, &isOnAC);
- if (!isNonnegative(percent)) {
- this->values[0] = NAN;
- xSnprintf(this->txtBuffer, sizeof(this->txtBuffer), "N/A");
- return;
- }
- this->values[0] = percent;
- const char* text;
- switch (isOnAC) {
- case AC_PRESENT:
- text = this->mode == TEXT_METERMODE ? " (Running on A/C)" : "(A/C)";
- break;
- case AC_ABSENT:
- text = this->mode == TEXT_METERMODE ? " (Running on battery)" : "(bat)";
- break;
- case AC_ERROR:
- default:
- text = "";
- break;
- }
- xSnprintf(this->txtBuffer, sizeof(this->txtBuffer), "%.1f%%%s", percent, text);
- }
- const MeterClass BatteryMeter_class = {
- .super = {
- .extends = Class(Meter),
- .delete = Meter_delete
- },
- .updateValues = BatteryMeter_updateValues,
- .defaultMode = TEXT_METERMODE,
- .supportedModes = METERMODE_DEFAULT_SUPPORTED,
- .maxItems = 1,
- .total = 100.0,
- .attributes = BatteryMeter_attributes,
- .name = "Battery",
- .uiName = "Battery",
- .caption = "Battery: "
- };
|