Fixed not visible when only battery is plugged in

This commit is contained in:
Erik Reider 2022-03-19 11:19:39 +01:00
parent d7a030daf3
commit 2b2ac311d5

View File

@ -171,50 +171,58 @@ void UPower::resetDevices() {
auto UPower::update() -> void {
std::lock_guard<std::mutex> guard(m_Mutex);
if (devices.size() == 0 && hideIfEmpty) {
UpDeviceKind kind;
UpDeviceState state;
double percentage;
gboolean is_power_supply;
gboolean is_present;
gchar* icon_name;
g_object_get(displayDevice,
"kind",
&kind,
"state",
&state,
"is-present",
&is_present,
"power-supply",
&is_power_supply,
"percentage",
&percentage,
"icon-name",
&icon_name,
NULL);
bool displayDeviceValid =
kind == UpDeviceKind::UP_DEVICE_KIND_BATTERY || kind == UpDeviceKind::UP_DEVICE_KIND_UPS;
std::string percentString = "";
std::string tooltip = "";
if (devices.size() == 0 && !displayDeviceValid && hideIfEmpty) {
event_box_.set_visible(false);
} else {
event_box_.set_visible(true);
UpDeviceKind kind;
UpDeviceState state;
double percentage;
gboolean is_power_supply;
gboolean is_present;
gchar* icon_name;
g_object_get(displayDevice,
"kind",
&kind,
"state",
&state,
"is-present",
&is_present,
"power-supply",
&is_power_supply,
"percentage",
&percentage,
"icon-name",
&icon_name,
NULL);
bool displayDeviceValid =
kind == UpDeviceKind::UP_DEVICE_KIND_BATTERY || kind == UpDeviceKind::UP_DEVICE_KIND_UPS;
// TODO: Tooltip
// Set percentage
std::string percent_string =
displayDeviceValid ? std::to_string(int(percentage + 0.5)) + "%" : "";
label_.set_text(percent_string);
// Set icon
if (!Gtk::IconTheme::get_default()->has_icon(icon_name)) {
icon_name = (char*)"battery-missing-symbolic";
}
icon_.set_from_icon_name(icon_name, Gtk::ICON_SIZE_INVALID);
goto update;
}
event_box_.set_visible(true);
// TODO: Tooltip
// Set percentage
if (displayDeviceValid) {
percentString = std::to_string(int(percentage + 0.5)) + "%";
}
label_.set_text(percentString);
// Set icon
if (!Gtk::IconTheme::get_default()->has_icon(icon_name)) {
icon_name = (char*)"battery-missing-symbolic";
}
icon_.set_from_icon_name(icon_name, Gtk::ICON_SIZE_INVALID);
update:
// Call parent update
AModule::update();
}