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