diff --git a/app/ui/__init__.py b/app/ui/__init__.py
index 2f0f05e6..55233775 100644
--- a/app/ui/__init__.py
+++ b/app/ui/__init__.py
@@ -19,6 +19,9 @@ _ICON_THEME = Gtk.IconTheme.get_default()
def get_icon(name, fallback):
return name if name and _ICON_THEME.has_icon(name) else fallback
+def get_battery_icon(level):
+ return 'battery_%03d' % (10 * ((level + 5) // 10))
+
def icon_file(name):
if name and _ICON_THEME.has_icon(name):
return _ICON_THEME.lookup_icon(name, 0, 0).get_filename()
diff --git a/app/ui/main_window.py b/app/ui/main_window.py
index 794b3414..6e40ead4 100644
--- a/app/ui/main_window.py
+++ b/app/ui/main_window.py
@@ -272,6 +272,8 @@ def _update_device_box(frame, dev):
status_icons = status.get_children()
if dev.status < STATUS.CONNECTED:
+ label.set_sensitive(True)
+
battery_icon, battery_label = status_icons[0:2]
battery_icon.set_sensitive(False)
battery_label.set_markup('%s' % dev.status_text)
@@ -280,6 +282,8 @@ def _update_device_box(frame, dev):
c.set_visible(False)
else:
+ label.set_sensitive(True)
+
battery_icon, battery_label = status_icons[0:2]
battery_level = dev.props.get(PROPS.BATTERY_LEVEL)
if battery_level is None:
@@ -289,8 +293,7 @@ def _update_device_box(frame, dev):
battery_label.set_markup('%s' % text)
battery_label.set_sensitive(False)
else:
- icon_name = 'battery_%03d' % (20 * ((battery_level + 10) // 20))
- battery_icon.set_from_icon_name(icon_name, _STATUS_ICON_SIZE)
+ battery_icon.set_from_icon_name(ui.get_battery_icon(battery_level), _STATUS_ICON_SIZE)
battery_icon.set_sensitive(True)
battery_label.set_text('%d%%' % battery_level)
battery_label.set_sensitive(True)
diff --git a/app/ui/status_icon.py b/app/ui/status_icon.py
index 889998f1..b091d3d2 100644
--- a/app/ui/status_icon.py
+++ b/app/ui/status_icon.py
@@ -32,17 +32,14 @@ def create(window, menu_actions=None):
def update(icon, receiver):
- icon.set_from_icon_name(ui.appicon(receiver.status))
+ battery_level = None
- # device_with_battery = None
-
- if receiver.devices:
+ if receiver.status > STATUS.CONNECTED and receiver.devices:
lines = []
if receiver.status < STATUS.CONNECTED:
lines += (receiver.status_text, '')
- devlist = list(receiver.devices.values())
- devlist.sort(lambda x, y: x.number < y.number)
+ devlist = sorted(receiver.devices.values(), key=lambda x: x.number)
for dev in devlist:
name = '' + dev.name + ''
if dev.status < STATUS.CONNECTED:
@@ -53,10 +50,15 @@ def update(icon, receiver):
lines.append(' ' + dev.status_text)
lines.append('')
- # if device_with_battery is None and PROPS.BATTERY_LEVEL in dev.props:
- # device_with_battery = dev
+ if battery_level is None and PROPS.BATTERY_LEVEL in dev.props:
+ battery_level = dev.props[PROPS.BATTERY_LEVEL]
text = '\n'.join(lines).rstrip('\n')
icon.set_tooltip_markup(ui.NAME + ':\n' + text)
else:
icon.set_tooltip_text(ui.NAME + ': ' + receiver.status_text)
+
+ if battery_level is None:
+ icon.set_from_icon_name(ui.appicon(receiver.status))
+ else:
+ icon.set_from_icon_name(ui.get_battery_icon(battery_level))
diff --git a/share/icons/hicolor/128x128/status/battery_000.png b/share/icons/hicolor/128x128/status/battery_000.png
index 6061fec2..7b233a91 100644
Binary files a/share/icons/hicolor/128x128/status/battery_000.png and b/share/icons/hicolor/128x128/status/battery_000.png differ
diff --git a/share/icons/hicolor/128x128/status/battery_010.png b/share/icons/hicolor/128x128/status/battery_010.png
new file mode 100644
index 00000000..10141b8e
Binary files /dev/null and b/share/icons/hicolor/128x128/status/battery_010.png differ
diff --git a/share/icons/hicolor/128x128/status/battery_030.png b/share/icons/hicolor/128x128/status/battery_030.png
new file mode 100644
index 00000000..add6cfa8
Binary files /dev/null and b/share/icons/hicolor/128x128/status/battery_030.png differ
diff --git a/share/icons/hicolor/128x128/status/battery_040.png b/share/icons/hicolor/128x128/status/battery_040.png
index add6cfa8..22acc97e 100644
Binary files a/share/icons/hicolor/128x128/status/battery_040.png and b/share/icons/hicolor/128x128/status/battery_040.png differ
diff --git a/share/icons/hicolor/128x128/status/battery_050.png b/share/icons/hicolor/128x128/status/battery_050.png
new file mode 100644
index 00000000..9f189e16
Binary files /dev/null and b/share/icons/hicolor/128x128/status/battery_050.png differ
diff --git a/share/icons/hicolor/128x128/status/battery_070.png b/share/icons/hicolor/128x128/status/battery_070.png
new file mode 100644
index 00000000..e91425fe
Binary files /dev/null and b/share/icons/hicolor/128x128/status/battery_070.png differ
diff --git a/share/icons/hicolor/128x128/status/battery_090.png b/share/icons/hicolor/128x128/status/battery_090.png
new file mode 100644
index 00000000..f9e20cd2
Binary files /dev/null and b/share/icons/hicolor/128x128/status/battery_090.png differ