Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar/presence
diff options
context:
space:
mode:
authorDan Williams <dcbw@localhost.localdomain>2006-09-26 17:31:14 (GMT)
committer Dan Williams <dcbw@localhost.localdomain>2006-09-26 17:31:14 (GMT)
commitce577a6376b96bd564d8df6af821ae18ee44dad1 (patch)
tree6aac44cc649d31eebe2e97e1acd6832333d06638 /sugar/presence
parent31c69ed1679ee1f31766bf2b6ee6ab9ca28205fd (diff)
Refactor current activity handling to be top-level attributes and D-Bus signals, not stuck in the property dict
Diffstat (limited to 'sugar/presence')
-rw-r--r--sugar/presence/Buddy.py27
1 files changed, 24 insertions, 3 deletions
diff --git a/sugar/presence/Buddy.py b/sugar/presence/Buddy.py
index a0d3fd1..5e31157 100644
--- a/sugar/presence/Buddy.py
+++ b/sugar/presence/Buddy.py
@@ -18,6 +18,8 @@ class Buddy(gobject.GObject):
'left-activity': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
([gobject.TYPE_PYOBJECT])),
'property-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
+ ([gobject.TYPE_PYOBJECT])),
+ 'current-activity-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
([gobject.TYPE_PYOBJECT]))
}
@@ -39,8 +41,15 @@ class Buddy(gobject.GObject):
self._buddy.connect_to_signal('JoinedActivity', self._joined_activity_cb)
self._buddy.connect_to_signal('LeftActivity', self._left_activity_cb)
self._buddy.connect_to_signal('PropertyChanged', self._property_changed_cb)
+ self._buddy.connect_to_signal('CurrentActivityChanged', self._current_activity_changed_cb)
self._properties = self._get_properties_helper()
+ self._current_activity = None
+ try:
+ self._current_activity = self._buddy.getCurrentActivity()
+ except Exception, e:
+ pass
+
def _get_properties_helper(self):
props = self._buddy.getProperties()
if not props:
@@ -99,6 +108,18 @@ class Buddy(gobject.GObject):
def _property_changed_cb(self, prop_list):
gobject.idle_add(self._handle_property_changed_signal, prop_list)
+ def _handle_current_activity_changed_signal(self, act_list):
+ if len(act_list) == 0:
+ self._current_activity = None
+ self.emit('current-activity-changed')
+ else:
+ self._current_activity = act_list[0]
+ self.emit('current-activity-changed', self._ps_new_object(act_list[0]))
+ return False
+
+ def _current_activity_changed_cb(self, act_list):
+ gobject.idle_add(self._handle_current_activity_changed_signal, act_list)
+
def get_name(self):
return self._properties['name']
@@ -115,9 +136,9 @@ class Buddy(gobject.GObject):
return self._buddy.getIcon()
def get_current_activity(self):
- if self._properties.has_key('curact'):
- return self._properties['curact']
- return None
+ if not self._current_activity:
+ return None
+ return self._ps_new_object(self._current_activity)
def get_icon_pixbuf(self):
icon = self._buddy.getIcon()