[sugar] [PATCH] support battery-charge-state-dependent battery frame icon
Tomeu Vizoso
tomeu at tomeuvizoso.net
Tue Apr 22 11:27:58 EDT 2008
+ curr_level = self._model.props.level
I would use current_level, the occasional reader may not have as much
context as you.
r+ with that
Thanks,
Tomeu
On Fri, Apr 18, 2008 at 12:59 AM, Martin Dengler
<martin at martindengler.com> wrote:
> Support battery-charge-state-dependent battery frame icon and upgrade to consistency with battery icon design from http://wiki.laptop.org/go/Designs/Frame#06.
>
> Controversially (or so I think), this commit includes a very naive algorithm to calculate battery time/life remaining, as a principled approach is much more complex and this approach is better than what a naive human would do (e.g., only misleading to those who should be coming up with better patches :)). The code is very localized and self-contained so it's easy to rip out later.
> ---
> src/view/devices/battery.py | 50 +++++++++++++++++++++++++++++++------------
> 1 files changed, 36 insertions(+), 14 deletions(-)
>
> diff --git a/src/view/devices/battery.py b/src/view/devices/battery.py
> index 8a4caf0..f209ecc 100644
>
>
> --- a/src/view/devices/battery.py
> +++ b/src/view/devices/battery.py
> @@ -19,9 +19,11 @@ from gettext import gettext as _
> import gtk
>
> from sugar import profile
> +from sugar.graphics import style
> from sugar.graphics.icon import get_icon_state
> from sugar.graphics.tray import TrayIcon
> from sugar.graphics.palette import Palette
> +from sugar.graphics.xocolor import XoColor
>
> from view.frame.frameinvoker import FrameWidgetInvoker
>
> @@ -37,7 +39,7 @@ class DeviceView(TrayIcon):
> xo_color=profile.get_color())
>
> self._model = model
> - self.palette = BatteryPalette(_('My Battery life'))
> + self.palette = BatteryPalette(_('My Battery'))
> self.set_palette(self.palette)
> self.palette.props.invoker = FrameWidgetInvoker(self)
> self.palette.set_group_id('frame')
> @@ -48,21 +50,28 @@ class DeviceView(TrayIcon):
> self._update_info()
>
> def _update_info(self):
> - name = get_icon_state(_ICON_NAME, self._model.props.level)
> - self.icon.props.icon_name = name
> + name = _ICON_NAME
> + curr_level = self._model.props.level
> + xo_color = profile.get_color()
> + badge_name = None
>
>
>
> - # Update palette
> if self._model.props.charging:
> status = _STATUS_CHARGING
> - self.icon.props.badge_name = 'emblem-charging'
> + name += '-charging'
> + xo_color = XoColor('%s,%s' % (style.COLOR_WHITE.get_svg(),
> + style.COLOR_WHITE.get_svg()))
> elif self._model.props.discharging:
> status = _STATUS_DISCHARGING
> - self.icon.props.badge_name = None
> + if curr_level <= 15:
> + badge_name = 'emblem-warning'
> else:
> status = _STATUS_FULLY_CHARGED
> - self.icon.props.badge_name = None
>
> - self.palette.set_level(self._model.props.level)
> + self.icon.props.icon_name = get_icon_state(name, curr_level)
> + self.icon.props.xo_color = xo_color
> + self.icon.props.badge_name = badge_name
> +
> + self.palette.set_level(curr_level)
> self.palette.set_status(status)
>
> def _battery_status_changed_cb(self, pspec, param):
> @@ -92,13 +101,26 @@ class BatteryPalette(Palette):
> self._progress_bar.set_fraction(fraction)
>
> def set_status(self, status):
> - percent_string = ' (%s%%)' % self._level
> + curr_level = self._level
> + secondary_text = ''
> + status_text = '%s%%' % curr_level
>
> if status == _STATUS_CHARGING:
> - charge_text = _('Battery charging') + percent_string
> + secondary_text = _('Charging')
> elif status == _STATUS_DISCHARGING:
> - charge_text = _('Battery discharging') + percent_string
> - elif status == _STATUS_FULLY_CHARGED:
> - charge_text = _('Battery fully charged')
> + if curr_level <= 15:
> + secondary_text = _('Very little power remaining')
> + else:
> + #TODO: make this less of an wild/educated guess
> + minutes_remaining = int(curr_level / 0.59)
> + remaining_hourpart = minutes_remaining / 60
> + remaining_minpart = minutes_remaining % 60
> + secondary_text = _('%(hour)d:%(min).2d remaining'
> + % { 'hour': remaining_hourpart,
> + 'min': remaining_minpart})
> + else:
> + secondary_text = _('Charged')
> + status_text = ''
>
> - self._status_label.set_text(charge_text)
> + self.props.secondary_text = secondary_text
> + self._status_label.set_text(status_text)
> --
> 1.5.4.1
>
> _______________________________________________
>
>
> Sugar mailing list
> Sugar at lists.laptop.org
> http://lists.laptop.org/listinfo/sugar
>
More information about the Sugar
mailing list