diff options
author | Marco Pesenti Gritti <mpg@redhat.com> | 2007-08-27 20:12:31 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <mpg@redhat.com> | 2007-08-27 20:12:31 (GMT) |
commit | 3d02690e2308b03148229534f23ff66269e8054c (patch) | |
tree | b951f5be57497e9f35e507cbd5e14046635e34a3 /sugar | |
parent | c742cff64dde66ca7d8f2f68b1c41a023640d154 (diff) | |
parent | f5f95f4d7b84f5fe09499c6c4d75d1a06e1bbcb6 (diff) |
Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar
Diffstat (limited to 'sugar')
-rw-r--r-- | sugar/activity/registry.py | 23 | ||||
-rw-r--r-- | sugar/presence/presenceservice.py | 57 |
2 files changed, 80 insertions, 0 deletions
diff --git a/sugar/activity/registry.py b/sugar/activity/registry.py index 8fdae2f..39c2b3c 100644 --- a/sugar/activity/registry.py +++ b/sugar/activity/registry.py @@ -77,6 +77,29 @@ class ActivityRegistry(gobject.GObject): info_list = self._registry.GetActivities() return self._convert_info_list(info_list) + def _get_activities_cb(self, reply_handler, info_list): + result = [] + i = 0 + for info_dict in info_list: + result.append(_activity_info_from_dict(info_dict)) + + reply_handler(result) + + def _get_activities_error_cb(self, error_handler, e): + if error_handler: + error_handler(e) + else: + logging.error('Error getting activities async: %s' % str(e)) + + def get_activities_async(self, reply_handler=None, error_handler=None): + if not reply_handler: + logging.error('Function get_activities_async called without a reply handler. Can not run.') + return + + self._registry.GetActivities( + reply_handler=lambda info_list:self._get_activities_cb(reply_handler, info_list), + error_handler=lambda e:self._get_activities_error_cb(error_handler, e)) + def get_activity(self, service_name): if self._service_name_to_activity_info.has_key(service_name): return self._service_name_to_activity_info[service_name] diff --git a/sugar/presence/presenceservice.py b/sugar/presence/presenceservice.py index a271282..c8e23db 100644 --- a/sugar/presence/presenceservice.py +++ b/sugar/presence/presenceservice.py @@ -268,6 +268,35 @@ class PresenceService(gobject.GObject): acts.append(self._new_object(item)) return acts + def _get_activities_cb(self, reply_handler, resp): + acts = [] + for item in resp: + acts.append(self._new_object(item)) + + reply_handler(acts) + + def _get_activities_error_cb(self, error_handler, e): + if error_handler: + error_handler(e) + else: + _logger.warn( + """Unable to retrieve activity-list from presence service: %s""" + % e + ) + + def get_buddies_async(self, reply_handler=None, error_handler=None): + """Retrieve set of all activities from service asyncronously + """ + + if not reply_handler: + logging.error('Function get_activities_async called without a reply handler. Can not run.') + return + + self._ps.GetActivities( + reply_handler=lambda resp:self._get_activities_cb(reply_handler, resp), + error_handler=lambda e:self._get_activities_error_cb(error_handler, e)) + + def get_activity(self, activity_id): """Retrieve single Activity object for the given unique id @@ -306,6 +335,34 @@ class PresenceService(gobject.GObject): buddies.append(self._new_object(item)) return buddies + def _get_buddies_cb(self, reply_handler, resp): + buddies = [] + for item in resp: + buddies.append(self._new_object(item)) + + reply_handler(buddies) + + def _get_buddies_error_cb(self, error_handler, e): + if error_handler: + error_handler(e) + else: + _logger.warn( + """Unable to retrieve buddy-list from presence service: %s""" + % e + ) + + def get_buddies_async(self, reply_handler=None, error_handler=None): + """Retrieve set of all buddies from service asyncronously + """ + + if not reply_handler: + logging.error('Function get_buddies_async called without a reply handler. Can not run.') + return + + self._ps.GetBuddies( + reply_handler=lambda resp:self._get_buddies_cb(reply_handler, resp), + error_handler=lambda e:self._get_buddies_error_cb(error_handler, e)) + def get_buddy(self, key): """Retrieve single Buddy object for the given public key |