if the battery level is approximative, show a string instead of percentage

This commit is contained in:
Daniel Pavel 2013-06-24 17:02:00 +02:00
parent 375db9996f
commit f64942b51d
2 changed files with 14 additions and 6 deletions

View File

@ -20,7 +20,7 @@ from logging import getLogger, DEBUG as _DEBUG
_log = getLogger('LUR.status') _log = getLogger('LUR.status')
del getLogger del getLogger
from .common import NamedInts as _NamedInts, strhex as _strhex from .common import NamedInts as _NamedInts, NamedInt as _NamedInt, strhex as _strhex
from . import hidpp10 as _hidpp10 from . import hidpp10 as _hidpp10
from . import hidpp20 as _hidpp20 from . import hidpp20 as _hidpp20
@ -146,6 +146,7 @@ class DeviceStatus(dict):
return format % value return format % value
def _items(): def _items():
# TODO properly string approximative battery levels
battery_level = _item(KEYS.BATTERY_LEVEL, 'Battery: %d%%') battery_level = _item(KEYS.BATTERY_LEVEL, 'Battery: %d%%')
if battery_level: if battery_level:
yield battery_level yield battery_level
@ -168,8 +169,9 @@ class DeviceStatus(dict):
__nonzero__ = __bool__ __nonzero__ = __bool__
def set_battery_info(self, level, status, timestamp=None): def set_battery_info(self, level, status, timestamp=None):
assert isinstance(level, int)
if _log.isEnabledFor(_DEBUG): if _log.isEnabledFor(_DEBUG):
_log.debug("%s: battery %d%%, %s", self._device, level, status) _log.debug("%s: battery %s, %s", self._device, level, status)
# TODO: this is also executed when pressing Fn+F7 on K800. # TODO: this is also executed when pressing Fn+F7 on K800.
old_level, self[KEYS.BATTERY_LEVEL] = self.get(KEYS.BATTERY_LEVEL), level old_level, self[KEYS.BATTERY_LEVEL] = self.get(KEYS.BATTERY_LEVEL), level
@ -184,7 +186,10 @@ class DeviceStatus(dict):
if not _hidpp20.BATTERY_OK(status) or level <= _BATTERY_ATTENTION_LEVEL: if not _hidpp20.BATTERY_OK(status) or level <= _BATTERY_ATTENTION_LEVEL:
_log.warn("%s: battery %d%%, ALERT %s", self._device, level, status) _log.warn("%s: battery %d%%, ALERT %s", self._device, level, status)
alert = ALERT.NOTIFICATION | ALERT.ATTENTION alert = ALERT.NOTIFICATION | ALERT.ATTENTION
reason = 'Battery: %d%% (%s)' % (level, status) if isinstance(level, _NamedInt):
reason = 'battery: %s (%s)' % (level, status)
else:
reason = 'battery: %d%% (%s)' % (level, status)
if changed or reason: if changed or reason:
# update the leds on the device, if any # update the leds on the device, if any

View File

@ -8,13 +8,13 @@ from logging import getLogger, DEBUG as _DEBUG
_log = getLogger(__name__) _log = getLogger(__name__)
del getLogger del getLogger
from gi.repository import Gtk, Gdk, GLib from gi.repository import Gtk, Gdk
from gi.repository.GObject import TYPE_PYOBJECT from gi.repository.GObject import TYPE_PYOBJECT
from solaar import NAME from solaar import NAME
# from solaar import __version__ as VERSION # from solaar import __version__ as VERSION
from logitech.unifying_receiver import hidpp10 as _hidpp10 from logitech.unifying_receiver import hidpp10 as _hidpp10
from logitech.unifying_receiver.common import NamedInts as _NamedInts from logitech.unifying_receiver.common import NamedInts as _NamedInts, NamedInt as _NamedInt
from logitech.unifying_receiver.status import KEYS as _K from logitech.unifying_receiver.status import KEYS as _K
from . import config_panel as _config_panel from . import config_panel as _config_panel
from . import action as _action, icons as _icons from . import action as _action, icons as _icons
@ -552,7 +552,10 @@ def _update_device_panel(device, panel, buttons, full=False):
panel._battery._icon.set_from_icon_name(icon_name, _INFO_ICON_SIZE) panel._battery._icon.set_from_icon_name(icon_name, _INFO_ICON_SIZE)
panel._battery._icon.set_sensitive(True) panel._battery._icon.set_sensitive(True)
text = '%d%%' % battery_level if isinstance(battery_level, _NamedInt):
text = str(battery_level)
else:
text = '%d%%' % battery_level
if is_online: if is_online:
if charging: if charging:
text += ' <small>(charging)</small>' text += ' <small>(charging)</small>'