Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorgan Collett <morgan.collett@gmail.com>2007-10-03 19:45:41 (GMT)
committer Morgan Collett <morgan.collett@gmail.com>2007-10-03 19:45:41 (GMT)
commit779155590ef0a541f733b00070624493d42a0cb1 (patch)
treebea4d97840a2cbdc34b883b30eed72ad8140411e
parent61552d94b92da7f84fd7ed01ecf907df25286f14 (diff)
Replaced _get_buddy with new sugar.presence get_buddy_by_handle
-rw-r--r--activity.py31
1 files changed, 6 insertions, 25 deletions
diff --git a/activity.py b/activity.py
index e6c776e..26ccfa1 100644
--- a/activity.py
+++ b/activity.py
@@ -177,7 +177,7 @@ class HelloMeshActivity(Activity):
tube_conn = TubeConnection(self.conn,
self.tubes_chan[telepathy.CHANNEL_TYPE_TUBES],
id, group_iface=self.text_chan[telepathy.CHANNEL_INTERFACE_GROUP])
- self.hellotube = HelloTube(tube_conn, self.initiating, self._get_buddy)
+ self.hellotube = HelloTube(tube_conn, self.initiating, self)
def _buddy_joined_cb (self, activity, buddy):
self._logger.debug('Buddy %s joined' % buddy.props.nick)
@@ -185,48 +185,29 @@ class HelloMeshActivity(Activity):
def _buddy_left_cb (self, activity, buddy):
self._logger.debug('Buddy %s left' % buddy.props.nick)
- def _get_buddy(self, cs_handle):
- """Get a Buddy from a channel specific handle."""
- self._logger.debug('Trying to find owner of handle %u...', cs_handle)
- group = self.text_chan[telepathy.CHANNEL_INTERFACE_GROUP]
- my_csh = group.GetSelfHandle()
- self._logger.debug('My handle in that group is %u', my_csh)
- if my_csh == cs_handle:
- handle = self.conn.GetSelfHandle()
- self._logger.debug('CS handle %u belongs to me, %u', cs_handle, handle)
- elif group.GetGroupFlags() & telepathy.CHANNEL_GROUP_FLAG_CHANNEL_SPECIFIC_HANDLES:
- handle = group.GetHandleOwners([cs_handle])[0]
- self._logger.debug('CS handle %u belongs to %u', cs_handle, handle)
- else:
- handle = cs_handle
- logger.debug('non-CS handle %u belongs to itself', handle)
- # XXX: deal with failure to get the handle owner
- assert handle != 0
- return self.pservice.get_buddy_by_telepathy_handle(self.tp_conn_name,
- self.tp_conn_path, handle)
class HelloTube(ExportedGObject):
"""The bit that talks over the TUBES!!!"""
- def __init__(self, tube, is_initiator, get_buddy):
+ def __init__(self, tube, is_initiator, activity):
super(HelloTube, self).__init__(tube, PATH)
self._logger = logging.getLogger('hellomesh-activity.HelloTube')
self.tube = tube
self.is_initiator = is_initiator
+ self.activity = activity # sugar.activity.Activity
self.entered = False # Have we set up the tube?
self.helloworld = False # Trivial "game state"
- self._get_buddy = get_buddy # Converts handle to Buddy object
self.tube.watch_participants(self.participant_change_cb)
def participant_change_cb(self, added, removed):
self._logger.debug('Adding participants: %r' % added)
- self._logger.debug('Removing participants: %r' % type(removed))
+ self._logger.debug('Removing participants: %r' % removed)
for handle, bus_name in added:
- buddy = self._get_buddy(handle)
+ buddy = self.activity._shared_activity.get_buddy_by_handle(handle)
if buddy is not None:
self._logger.debug('Buddy %s was added' % buddy.props.nick)
for handle in removed:
- buddy = self._get_buddy(handle)
+ buddy = self.activity._shared_activity.get_buddy_by_handle(handle)
if buddy is not None:
self._logger.debug('Buddy %s was removed' % buddy.props.nick)
if not self.entered: