diff --git a/activities/chat/ChatActivity.py b/activities/chat/ChatActivity.py index 3239b6e7..f014e16c 100644 --- a/activities/chat/ChatActivity.py +++ b/activities/chat/ChatActivity.py @@ -4,6 +4,7 @@ import logging import gtk import gobject +from gettext import gettext as _ from sugar.activity.Activity import Activity from sugar.presence import Service @@ -17,22 +18,14 @@ _CHAT_ACTIVITY_TYPE = "_chat_activity_type._tcp" class ChatActivity(Activity): def __init__(self, service): - Activity.__init__(self, _CHAT_ACTIVITY_TYPE) + Activity.__init__(self) + self.set_title(_('Private chat')) + self._service = service self._chat = BuddyChat(self._service) - - def on_connected_to_shell(self): - self.set_tab_text(self._service.get_name()) - self.set_can_close(True) - self.set_tab_icon(name = "im") - self.set_show_tab_icon(True) + self.add(self._chat) + self._chat.show() - plug = self.gtk_plug() - plug.add(self._chat) - self._chat.show() - - plug.show() - def recv_message(self, message): self._chat.recv_message(message) @@ -45,8 +38,8 @@ class ChatShellDbusService(dbus.service.Object): dbus.service.Object.__init__(self, bus_name, object_path) @dbus.service.method('com.redhat.Sugar.ChatShell') - def open_chat(self, serialized_service): - self._parent.open_chat(Service.deserialize(serialized_service)) + def open_chat(self, service_path): + self._parent.open_chat(service_path) class ChatListener: def __init__(self): @@ -81,7 +74,8 @@ class ChatListener: logging.error('The buddy %s is not present.' % (nick)) return - def open_chat(self, service): + def open_chat(self, service_path): + service = self._pservice._new_object(service_path) chat = ChatActivity(service) self._chats[service.get_name()] = chat gobject.idle_add(self._connect_chat, chat) diff --git a/activities/chat/chat.activity b/activities/chat/chat.activity index 6509f087..a0c876d6 100644 --- a/activities/chat/chat.activity +++ b/activities/chat/chat.activity @@ -2,3 +2,4 @@ name = Chat id = com.redhat.Sugar.ChatActivity python_module = ChatActivity.ChatActivity +default_type = _web_olpc._udp diff --git a/shell/PresenceService/Buddy.py b/shell/PresenceService/Buddy.py index 5a6c961b..33eae9dc 100644 --- a/shell/PresenceService/Buddy.py +++ b/shell/PresenceService/Buddy.py @@ -54,12 +54,12 @@ class BuddyDBusHelper(dbus.service.Object): return icon @dbus.service.method(BUDDY_DBUS_INTERFACE, - in_signature="", out_signature="o") + in_signature="s", out_signature="o") def getServiceOfType(self, stype): service = self._parent.get_service_of_type(stype) if not service: raise NotFoundError("Not found") - return service + return service.object_path() @dbus.service.method(BUDDY_DBUS_INTERFACE, in_signature="", out_signature="ao") @@ -213,6 +213,7 @@ class Buddy(object): for service in self._services.values(): if service.get_type() == stype and service.get_activity_id() == actid: return service + if self._services.has_key(stype): return self._services[stype] return None diff --git a/shell/PresenceView.py b/shell/PresenceView.py index c9c20021..05397354 100644 --- a/shell/PresenceView.py +++ b/shell/PresenceView.py @@ -110,12 +110,12 @@ class PresenceView(gtk.VBox): buddy = view.get_model().get_value(aniter, self._MODEL_COL_BUDDY) if buddy: chat_service = buddy.get_service_of_type(BuddyChat.SERVICE_TYPE) + print chat_service if chat_service: bus = dbus.SessionBus() proxy_obj = bus.get_object('com.redhat.Sugar.Chat', '/com/redhat/Sugar/Chat') chat_shell = dbus.Interface(proxy_obj, 'com.redhat.Sugar.ChatShell') - serialized_service = Service.serialize(chat_service) - chat_shell.open_chat(serialized_service) + chat_shell.open_chat(chat_service.object_path()) else: print 'Could not find buddy chat'