diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-08-09 13:53:10 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-08-09 13:53:10 (GMT) |
commit | 95d9b7fe8e7cbde413ef5f937cc1dda2b7fa8813 (patch) | |
tree | 733abfdda232625b72d52cc92929fc8d78ff5696 /shell/ChatController.py | |
parent | a9a65f42dfe4f0ca4eb7c916ec4afc9b3e376c69 (diff) |
More work on the chat. Fix terminal api
Diffstat (limited to 'shell/ChatController.py')
-rw-r--r-- | shell/ChatController.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/shell/ChatController.py b/shell/ChatController.py new file mode 100644 index 0000000..65bd8c6 --- /dev/null +++ b/shell/ChatController.py @@ -0,0 +1,28 @@ +from sugar import env +from sugar.chat.BuddyChat import BuddyChat +from sugar.activity import ActivityFactory +from sugar.presence.PresenceService import PresenceService +from sugar.p2p.Stream import Stream + +class ChatController: + def __init__(self, shell): + self._shell = shell + + def listen(self): + self._pservice = PresenceService() + + self._pservice.register_service_type(BuddyChat.SERVICE_TYPE) + self._service = self._pservice.register_service(env.get_nick_name(), + BuddyChat.SERVICE_TYPE) + + self._buddy_stream = Stream.new_from_service(self._service) + self._buddy_stream.set_data_listener(self._recv_message) + + def _recv_message(self, address, message): + [nick, msg] = Chat.deserialize_message(message) + buddy = self._pservice.get_buddy_by_name(nick) + if buddy: + activity = self._shell.start_activity('com.redhat.Sugar.ChatActivity') + service = buddy.get_service_of_type(BuddyChat.SERVICE_TYPE) + activity.execute('start', service.object_path()) + activity.execute('message', message) |