X-Git-Url: http://git.maemo.org/git/?p=theonering;a=blobdiff_plain;f=src%2Fconnection.py;h=5fe94de51327b2712d1e5e672f7c8c738991c87e;hp=eb2abc6a33294e90ae06333e108beb101ecb4941;hb=155d582be8f8606989447364d93f754751e6820e;hpb=59327fe23f05616d0976777d00ae0024f2ea0265 diff --git a/src/connection.py b/src/connection.py index eb2abc6..5fe94de 100644 --- a/src/connection.py +++ b/src/connection.py @@ -4,10 +4,13 @@ import logging import telepathy import constants +import util.go_utils as gobject_utils +import util.coroutines as coroutines import gtk_toolbox import gvoice import handle import aliasing +import simple_presence import channel_manager @@ -16,10 +19,12 @@ _moduleLogger = logging.getLogger("connection") class TheOneRingConnection( telepathy.server.Connection, - aliasing.AliasingMixin + aliasing.AliasingMixin, + simple_presence.SimplePresenceMixin, ): # Overriding a base class variable + # Should the forwarding number be handled by the alias or by an option? _mandatory_parameters = { 'username' : 's', 'password' : 's', @@ -44,6 +49,7 @@ class TheOneRingConnection( constants._telepathy_implementation_name_ ) aliasing.AliasingMixin.__init__(self) + simple_presence.SimplePresenceMixin.__init__(self) self._manager = weakref.proxy(manager) self._credentials = ( @@ -155,7 +161,7 @@ class TheOneRingConnection( _moduleLogger.info("RequestChannel Media") channel = channelManager.channel_for_call(handle, suppressHandler) else: - raise telepathy.NotImplemented("unknown channel type %s" % type) + raise telepathy.errors.NotImplemented("unknown channel type %s" % type) _moduleLogger.info("RequestChannel Object Path: %s" % channel._object_path) return channel._object_path @@ -180,26 +186,27 @@ class TheOneRingConnection( _moduleLogger.info("RequestHandles List: %s" % name) h = handle.create_handle(self, 'list', name) else: - raise telepathy.NotAvailable('Handle type unsupported %d' % handleType) + raise telepathy.errors.NotAvailable('Handle type unsupported %d' % handleType) handles.append(h.id) self.add_client_handle(h, sender) return handles def _create_contact_handle(self, requestedHandleName): - """ - @todo Determine if nay of this is really needed - """ requestedContactId, requestedContactNumber = handle.ContactHandle.from_handle_name( requestedHandleName ) h = handle.create_handle(self, 'contact', requestedContactId, requestedContactNumber) return h - def _on_invite_text(self, contactId): - """ - @todo Make this work - """ - h = self._create_contact_handle(contactId) - + @coroutines.func_sink + @coroutines.expand_positional + @gobject_utils.async + def _on_conversations_updated(self, conversationIds): + # @todo get conversations update running + # @todo test conversatiuons channelManager = self._channelManager - channel = channelManager.channel_for_text(handle) + for contactId, phoneNumber in conversationIds: + h = self._create_contact_handle(contactId, phoneNumber) + # if its new, __init__ will take care of things + # if its old, its own update will take care of it + channel = channelManager.channel_for_text(handle)