Get one-to-one chat to actually work...
This commit is contained in:
@@ -1,15 +1,14 @@
|
||||
from sugar.activity.Activity import Activity
|
||||
from sugar.chat.Chat import Chat
|
||||
from sugar.p2p.Stream import Stream
|
||||
|
||||
class BuddyChat(Activity):
|
||||
class BuddyChat(Chat):
|
||||
SERVICE_TYPE = "_olpc_buddy_chat._tcp"
|
||||
|
||||
def __init__(self, service):
|
||||
Chat.__init__(self)
|
||||
|
||||
self._stream = Stream.new_from_service(service)
|
||||
self._stream.set_data_listener(self._recv_message)
|
||||
self._stream_writer = self._group_stream.new_writer()
|
||||
self._stream = Stream.new_from_service(service, False)
|
||||
self._stream_writer = self._stream.new_writer(service)
|
||||
|
||||
def recv_message(self, address, msg):
|
||||
print msg
|
||||
# Chat.recv_message(self, self._buddy, msg)
|
||||
def _recv_message_cb(self, address, msg):
|
||||
self.recv_message(msg)
|
||||
|
||||
+11
-3
@@ -28,6 +28,9 @@ class Chat(gtk.VBox):
|
||||
def __init__(self):
|
||||
gtk.VBox.__init__(self, False, 6)
|
||||
|
||||
self._pservice = PresenceService.get_instance()
|
||||
self._pservice.start()
|
||||
|
||||
self._stream_writer = None
|
||||
self.set_border_width(12)
|
||||
|
||||
@@ -193,13 +196,16 @@ class Chat(gtk.VBox):
|
||||
return msg[desc_start:svg_last + len(tag_svg_end)]
|
||||
return None
|
||||
|
||||
def recv_message(self, buddy, msg):
|
||||
def recv_message(self, message):
|
||||
"""Insert a remote chat message into the chat buffer."""
|
||||
[nick, msg] = Chat.deserialize_message(message)
|
||||
buddy = self._pservice.get_buddy_by_nick_name(nick)
|
||||
if not buddy:
|
||||
logging.error('The buddy %s is not present.' % (nick))
|
||||
return
|
||||
|
||||
# FIXME a better way to compare buddies?
|
||||
owner = PresenceService.get_instance().get_owner()
|
||||
owner = self._pservice.get_owner()
|
||||
if buddy.get_nick_name() == owner.get_nick_name():
|
||||
return
|
||||
|
||||
@@ -236,5 +242,7 @@ class Chat(gtk.VBox):
|
||||
owner = PresenceService.get_instance().get_owner()
|
||||
return owner.get_nick_name() + '||' + message
|
||||
|
||||
def deserialize_message(self, message):
|
||||
def deserialize_message(message):
|
||||
return message.split('||', 1)
|
||||
|
||||
deserialize_message = staticmethod(deserialize_message)
|
||||
|
||||
@@ -8,8 +8,6 @@ import sugar.env
|
||||
class GroupChat(Chat):
|
||||
def __init__(self):
|
||||
Chat.__init__(self)
|
||||
self._pservice = PresenceService.get_instance()
|
||||
self._pservice.start()
|
||||
self._group_stream = None
|
||||
|
||||
def _setup_stream(self, service):
|
||||
@@ -18,10 +16,4 @@ class GroupChat(Chat):
|
||||
self._stream_writer = self._group_stream.new_writer()
|
||||
|
||||
def _group_recv_message(self, address, msg):
|
||||
pservice = PresenceService.get_instance()
|
||||
[nick, msg] = self.deserialize_message(msg)
|
||||
buddy = pservice.get_buddy_by_nick_name(nick)
|
||||
if buddy:
|
||||
self.recv_message(buddy, msg)
|
||||
else:
|
||||
logging.error('The buddy %s is not present.' % (nick))
|
||||
self.recv_message(msg)
|
||||
|
||||
Reference in New Issue
Block a user