Ticket #5867: 5867.patch

File 5867.patch, 4.3 kB (added by rbh00, 7 years ago)

Patch file. Apply with: cd /usr/share/sugar; patch -p1 < wherever-patch-file-is

  • shell/model/devices/battery.py

    diff -urN sugar/shell/model/devices/battery.py NEWsugar/shell/model/devices/battery.py
    old new  
    2424_LEVEL_PROP = 'battery.charge_level.percentage' 
    2525_CHARGING_PROP = 'battery.rechargeable.is_charging' 
    2626_DISCHARGING_PROP = 'battery.rechargeable.is_discharging' 
     27_PRESENT_PROP = 'battery.present' 
    2728 
    2829class Device(device.Device): 
    2930    __gproperties__ = { 
     
    3233        'charging'    : (bool, None, None, False, 
    3334                         gobject.PARAM_READABLE), 
    3435        'discharging' : (bool, None, None, False, 
     36                         gobject.PARAM_READABLE), 
     37        'present'     : (bool, None, None, False, 
    3538                         gobject.PARAM_READABLE) 
    3639    } 
    3740 
     
    5053        self._level = self._get_level() 
    5154        self._charging = self._get_charging() 
    5255        self._discharging = self._get_discharging() 
     56        self._present = self._get_present() 
    5357 
    5458    def _get_level(self): 
    5559        try: 
     60            if not self._get_present(): 
     61                return 0 
    5662            return self._battery.GetProperty(_LEVEL_PROP) 
    5763        except dbus.DBusException: 
    5864            logging.error('Cannot access %s' % _LEVEL_PROP) 
     
    6066 
    6167    def _get_charging(self): 
    6268        try: 
     69            if not self._get_present(): 
     70                return False 
    6371            return self._battery.GetProperty(_CHARGING_PROP) 
    6472        except dbus.DBusException: 
    6573            logging.error('Cannot access %s' % _CHARGING_PROP) 
     
    6775 
    6876    def _get_discharging(self): 
    6977        try: 
     78            if not self._get_present(): 
     79                return False 
    7080            return self._battery.GetProperty(_DISCHARGING_PROP) 
    7181        except dbus.DBusException: 
    7282            logging.error('Cannot access %s' % _DISCHARGING_PROP) 
    7383            return False 
    7484 
     85    def _get_present(self): 
     86        try: 
     87            return self._battery.GetProperty(_PRESENT_PROP) 
     88        except dbus.DBusException: 
     89            logging.error('Cannot access %s' % _PRESENT_PROP) 
     90            return False 
     91 
    7592    def do_get_property(self, pspec): 
    7693        if pspec.name == 'level': 
    7794            return self._level  
     
    7996            return self._charging 
    8097        if pspec.name == 'discharging': 
    8198            return self._discharging 
     99        if pspec.name == 'present': 
     100            return self._present 
    82101 
    83102    def get_type(self): 
    84103        return 'battery' 
     
    94113            elif change[0] == _DISCHARGING_PROP: 
    95114                self._discharging = self._get_discharging() 
    96115                self.notify('discharging') 
     116            elif change[0] == _PRESENT_PROP: 
     117                self._present = self._get_present() 
     118                self.notify('present') 
  • shell/view/devices/battery.py

    diff -urN sugar/shell/view/devices/battery.py NEWsugar/shell/view/devices/battery.py
    old new  
    2929_STATUS_CHARGING = 0 
    3030_STATUS_DISCHARGING = 1 
    3131_STATUS_FULLY_CHARGED = 2 
     32_STATUS_NOT_PRESENT = 3 
    3233 
    3334class DeviceView(CanvasIcon): 
    3435    def __init__(self, model): 
     
    4142        model.connect('notify::level', self._battery_status_changed_cb) 
    4243        model.connect('notify::charging', self._battery_status_changed_cb) 
    4344        model.connect('notify::discharging', self._battery_status_changed_cb) 
     45        model.connect('notify::present', self._battery_status_changed_cb) 
    4446        self._update_info() 
    4547 
    4648    def _update_info(self): 
     
    4850        self.props.icon_name = name 
    4951 
    5052        # Update palette 
    51         if self._model.props.charging: 
     53        if not self._model.props.present: 
     54            status = _STATUS_NOT_PRESENT 
     55            self.props.badge_name = None 
     56        elif self._model.props.charging: 
    5257            status = _STATUS_CHARGING 
    5358            self.props.badge_name = 'emblem-charging' 
    5459        elif self._model.props.discharging: 
     
    96101            charge_text = _('Battery discharging') + percent_string 
    97102        elif status == _STATUS_FULLY_CHARGED: 
    98103            charge_text = _('Battery fully charged') 
     104        elif status == _STATUS_NOT_PRESENT: 
     105            charge_text = _('Battery not present') 
    99106 
    100107        self._status_label.set_text(charge_text)