Ticket #315: add_contacts.patch

File add_contacts.patch, 2.6 KB (added by tomeu, 15 years ago)
  • src/jarabe/desktop/meshbox.py

    diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py
    index e56c4d5..f00f09a 100644
    a b from sugar.graphics.icon import get_icon_state 
    3131from sugar.graphics import palette
    3232from sugar.graphics import iconentry
    3333from sugar.graphics.menuitem import MenuItem
     34from sugar.graphics.toolbutton import ToolButton
    3435from sugar.activity.activityhandle import ActivityHandle
    3536from sugar.activity import activityfactory
    3637from sugar.util import unique_id
    from jarabe.model import network 
    4748from jarabe.model import shell
    4849from jarabe.model.network import Settings
    4950from jarabe.model.network import WirelessSecurity
     51from jarabe.util.telepathy import connection_watcher
    5052
    5153_NM_SERVICE = 'org.freedesktop.NetworkManager'
    5254_NM_IFACE = 'org.freedesktop.NetworkManager'
    class MeshToolbar(gtk.Toolbar): 
    547549
    548550        self._add_separator(expand=True)
    549551
     552        add_contact = ToolButton(icon_name='list-add')
     553        add_contact.set_tooltip(_('Add contact'))
     554        add_contact.connect('clicked', self.__add_contact_clicked_cb,
     555                            connection_watcher.ConnectionWatcher())
     556        add_contact.show()
     557        self.insert(add_contact, -1)
     558        add_contact.show()
     559
     560    def __add_contact_clicked_cb(self, button, conn_watcher):
     561        logging.debug('__add_contact_clicked_cb')
     562        connection = conn_watcher.get_connections()[0]
     563
     564        from telepathy.constants import CONNECTION_HANDLE_TYPE_CONTACT
     565        contact = connection.RequestHandles(CONNECTION_HANDLE_TYPE_CONTACT,
     566                                            ["tomeu-test@jabber.sugarlabs.org"])[0]
     567
     568        from telepathy.constants import CONNECTION_HANDLE_TYPE_LIST
     569        handle = connection.RequestHandles(CONNECTION_HANDLE_TYPE_LIST, ['subscribe'])[0]
     570
     571        logging.debug('__add_contact_clicked_cb calling RequestChannel')
     572        from telepathy.interfaces import CHANNEL_TYPE_CONTACT_LIST
     573        channel_path = connection.RequestChannel(CHANNEL_TYPE_CONTACT_LIST,
     574                                                 CONNECTION_HANDLE_TYPE_LIST,
     575                                                 handle, True)
     576
     577        from telepathy.client import Channel
     578        channel = Channel(connection.service_name, channel_path)
     579
     580        logging.debug('__add_contact_clicked_cb calling AddMembers')
     581        from telepathy.interfaces import CHANNEL_INTERFACE_GROUP
     582        channel[CHANNEL_INTERFACE_GROUP].AddMembers([contact], 'accept me!')
     583
    550584    def _add_separator(self, expand=False):
    551585        separator = gtk.SeparatorToolItem()
    552586        separator.props.draw = False