ui: use Battery object in GUI

This commit is contained in:
Peter F. Patel-Schneider 2024-03-06 17:25:10 -05:00
parent 64d8cad81a
commit 9121169f91
2 changed files with 16 additions and 17 deletions

View File

@ -23,7 +23,6 @@ import gi
from gi.repository import GLib, Gtk
from gi.repository.Gdk import ScrollDirection
from logitech_receiver.status import KEYS as _K
import solaar.gtk as gtk
@ -198,8 +197,8 @@ try:
def _update_tray_icon():
if _picked_device and gtk.battery_icons_style != "solaar":
_ignore, _ignore, name, device_status = _picked_device
battery_level = device_status.get(_K.BATTERY_LEVEL)
battery_charging = device_status.get(_K.BATTERY_CHARGING)
battery_level = device_status.battery.level if device_status.battery is not None else None
battery_charging = device_status.battery.charging() if device_status.battery is not None else None
tray_icon_name = _icons.battery(battery_level, battery_charging)
description = "%s: %s" % (name, device_status.to_string())
@ -253,8 +252,8 @@ except ImportError:
if _picked_device and gtk.battery_icons_style != "solaar":
_ignore, _ignore, name, device_status = _picked_device
battery_level = device_status.get(_K.BATTERY_LEVEL)
battery_charging = device_status.get(_K.BATTERY_CHARGING)
battery_level = device_status.battery.level if device_status.battery is not None else None
battery_charging = device_status.battery.charging() if device_status.battery is not None else None
tray_icon_name = _icons.battery(battery_level, battery_charging)
else:
# there may be a receiver, but no peripherals
@ -331,7 +330,7 @@ def _pick_device_with_lowest_battery():
for info in _devices_info:
if info[1] is None: # is receiver
continue
level = info[-1].get(_K.BATTERY_LEVEL)
level = info[-1].battery.level if info[-1].battery is not None else None
# print ("checking %s -> %s", info, level)
if level is not None and picked_level > level:
picked = info
@ -428,8 +427,8 @@ def _update_menu_item(index, device):
menu_items = _menu.get_children()
menu_item = menu_items[index]
level = device.status.get(_K.BATTERY_LEVEL)
charging = device.status.get(_K.BATTERY_CHARGING)
level = device.status.battery.level if device.status.battery is not None else None
charging = device.status.battery.charging() if device.status.battery is not None else None
icon_name = _icons.battery(level, charging)
menu_item.set_label((" " if 0 < device.number <= 6 else "") + device.name + ": " + device.status.to_string())

View File

@ -684,17 +684,17 @@ def _update_device_panel(device, panel, buttons, full=False):
is_online = bool(device.online)
panel.set_sensitive(is_online)
if device.status.get(_K.BATTERY_LEVEL) is None:
if device.status.battery is None or device.status.battery.level is None:
device.status.read_battery()
battery_level = device.status.get(_K.BATTERY_LEVEL)
battery_voltage = device.status.get(_K.BATTERY_VOLTAGE)
battery_level = device.status.battery.level if device.status.battery is not None else None
battery_voltage = device.status.battery.voltage if device.status.battery is not None else None
if battery_level is None and battery_voltage is None:
panel._battery.set_visible(False)
else:
panel._battery.set_visible(True)
battery_next_level = device.status.get(_K.BATTERY_NEXT_LEVEL)
charging = device.status.get(_K.BATTERY_CHARGING)
battery_next_level = device.status.battery.next_level
charging = device.status.battery.charging() if device.status.battery is not None else None
icon_name = _icons.battery(battery_level, charging)
panel._battery._icon.set_from_icon_name(icon_name, _INFO_ICON_SIZE)
panel._battery._icon.set_sensitive(True)
@ -752,7 +752,7 @@ def _update_device_panel(device, panel, buttons, full=False):
panel._secure.set_tooltip_text("")
if is_online:
light_level = device.status.get(_K.LIGHT_LEVEL)
light_level = device.status.battery.light_level if device.status.battery is not None else None
if light_level is None:
panel._lux.set_visible(False)
else:
@ -908,8 +908,8 @@ def update_device(device, item, selected_device_id, need_popup, full=False):
is_online = bool(device.online)
_model.set_value(item, _COLUMN.ACTIVE, is_online)
battery_level = device.status.get(_K.BATTERY_LEVEL)
battery_voltage = device.status.get(_K.BATTERY_VOLTAGE)
battery_level = device.status.battery.level if device.status.battery is not None else None
battery_voltage = device.status.battery.voltage if device.status.battery is not None else None
if battery_level is None:
_model.set_value(item, _COLUMN.STATUS_TEXT, _CAN_SET_ROW_NONE)
_model.set_value(item, _COLUMN.STATUS_ICON, _CAN_SET_ROW_NONE)
@ -922,7 +922,7 @@ def update_device(device, item, selected_device_id, need_popup, full=False):
status_text = "%(battery_percent)d%%" % {"battery_percent": battery_level}
_model.set_value(item, _COLUMN.STATUS_TEXT, status_text)
charging = device.status.get(_K.BATTERY_CHARGING)
charging = device.status.battery.charging() if device.status.battery is not None else None
icon_name = _icons.battery(battery_level, charging)
_model.set_value(item, _COLUMN.STATUS_ICON, icon_name)