Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
authorMorgan Collett <morgan.collett@gmail.com>2008-10-29 13:21:47 (GMT)
committer Morgan Collett <morgan.collett@gmail.com>2008-10-29 13:21:47 (GMT)
commitca2c0c5b48940a0c21b56f867d69fb3e8b4f178d (patch)
tree11c156b5fbe49eb6431512d9d44a49b8b5a03300 /extensions
parentfe62b74c2e2efab69191fc42de9fc6f6dcd2b506 (diff)
#5867: Show battery as removed, when it is
Remove the secondary palette (progress bar) when the battery is removed.
Diffstat (limited to 'extensions')
-rw-r--r--extensions/deviceicon/battery.py36
1 files changed, 33 insertions, 3 deletions
diff --git a/extensions/deviceicon/battery.py b/extensions/deviceicon/battery.py
index c9d621e..c25d124 100644
--- a/extensions/deviceicon/battery.py
+++ b/extensions/deviceicon/battery.py
@@ -35,10 +35,12 @@ _ICON_NAME = 'battery'
_STATUS_CHARGING = 0
_STATUS_DISCHARGING = 1
_STATUS_FULLY_CHARGED = 2
+_STATUS_NOT_PRESENT = 3
_LEVEL_PROP = 'battery.charge_level.percentage'
_CHARGING_PROP = 'battery.rechargeable.is_charging'
_DISCHARGING_PROP = 'battery.rechargeable.is_discharging'
+_PRESENT_PROP = 'battery.present'
class DeviceView(TrayIcon):
@@ -62,6 +64,8 @@ class DeviceView(TrayIcon):
self._battery_status_changed_cb)
self._model.connect('notify::discharging',
self._battery_status_changed_cb)
+ self._model.connect('notify::present',
+ self._battery_status_changed_cb)
self._update_info()
def _update_info(self):
@@ -70,7 +74,12 @@ class DeviceView(TrayIcon):
xo_color = self._color
badge_name = None
- if self._model.props.charging:
+ if not self._model.props.present:
+ status = _STATUS_NOT_PRESENT
+ badge_name = None
+ xo_color = XoColor('%s,%s' % (style.COLOR_WHITE.get_svg(),
+ style.COLOR_WHITE.get_svg()))
+ elif self._model.props.charging:
status = _STATUS_CHARGING
name += '-charging'
xo_color = XoColor('%s,%s' % (style.COLOR_WHITE.get_svg(),
@@ -110,7 +119,8 @@ class BatteryPalette(Palette):
vbox.pack_start(self._status_label)
vbox.show()
- self.set_content(vbox)
+ self._progress_widget = vbox
+ self.set_content(self._progress_widget)
def set_level(self, percent):
self._level = percent
@@ -122,7 +132,11 @@ class BatteryPalette(Palette):
secondary_text = ''
status_text = '%s%%' % current_level
- if status == _STATUS_CHARGING:
+ progress_widget = self._progress_widget
+ if status == _STATUS_NOT_PRESENT:
+ secondary_text = _('Removed')
+ progress_widget = None
+ elif status == _STATUS_CHARGING:
secondary_text = _('Charging')
elif status == _STATUS_DISCHARGING:
if current_level <= 15:
@@ -137,6 +151,7 @@ class BatteryPalette(Palette):
'min': remaining_minpart})
else:
secondary_text = _('Charged')
+ self.set_content(progress_widget)
self.props.secondary_text = secondary_text
self._status_label.set_text(status_text)
@@ -148,6 +163,8 @@ class DeviceModel(gobject.GObject):
'charging' : (bool, None, None, False,
gobject.PARAM_READABLE),
'discharging' : (bool, None, None, False,
+ gobject.PARAM_READABLE),
+ 'present' : (bool, None, None, False,
gobject.PARAM_READABLE)
}
@@ -167,6 +184,7 @@ class DeviceModel(gobject.GObject):
self._level = self._get_level()
self._charging = self._get_charging()
self._discharging = self._get_discharging()
+ self._present = self._get_present()
def _get_level(self):
try:
@@ -189,6 +207,13 @@ class DeviceModel(gobject.GObject):
logging.error('Cannot access %s' % _DISCHARGING_PROP)
return False
+ def _get_present(self):
+ try:
+ return self._battery.GetProperty(_PRESENT_PROP)
+ except dbus.DBusException:
+ logging.error('Cannot access %s' % _PRESENT_PROP)
+ return False
+
def do_get_property(self, pspec):
if pspec.name == 'level':
return self._level
@@ -196,6 +221,8 @@ class DeviceModel(gobject.GObject):
return self._charging
if pspec.name == 'discharging':
return self._discharging
+ if pspec.name == 'present':
+ return self._present
def get_type(self):
return 'battery'
@@ -211,6 +238,9 @@ class DeviceModel(gobject.GObject):
elif change[0] == _DISCHARGING_PROP:
self._discharging = self._get_discharging()
self.notify('discharging')
+ elif change[0] == _PRESENT_PROP:
+ self._present = self._get_present()
+ self.notify('present')
def setup(tray):
bus = dbus.Bus(dbus.Bus.TYPE_SYSTEM)