From: Ed Page Date: Sun, 27 Sep 2009 02:11:28 +0000 (-0500) Subject: Combining some code X-Git-Url: http://git.maemo.org/git/?p=theonering;a=commitdiff_plain;h=c36275efc363d3ef81f31e67526908e11a6ae030 Combining some code --- diff --git a/src/channel/contact_list.py b/src/channel/contact_list.py index fb80289..62c2d67 100644 --- a/src/channel/contact_list.py +++ b/src/channel/contact_list.py @@ -109,3 +109,65 @@ class TheOneRingPublishListChannel(TheOneRingListChannel): telepathy.CHANNEL_GROUP_CHANGE_REASON_INVITED, contact.attributes.get('invite_message', ''))) return result + + +class TheOneRingGroupChannel(TheOneRingListChannel): + + def __init__(self, connection, h): + self.__pending_add = [] + self.__pending_remove = [] + TheOneRingListChannel.__init__(self, connection, h) + self.GroupFlagsChanged( + telepathy.CHANNEL_GROUP_FLAG_CAN_ADD | telepathy.CHANNEL_GROUP_FLAG_CAN_REMOVE, + 0, + ) + + def AddMembers(self, contacts, message): + addressBook = self._conn.gvoice_client + if self._handle.group is None: + for contactHandleId in contacts: + contactHandle = self._conn.handle(telepathy.HANDLE_TYPE_CONTACT, contactHandleId) + logging.info("Adding contact %r to pending group %r" % (contactHandle, self._handle)) + if contactHandleId in self.__pending_remove: + self.__pending_remove.remove(contactHandleId) + else: + self.__pending_add.append(contactHandleId) + return + else: + for contactHandleId in contacts: + contactHandle = self._conn.handle(telepathy.HANDLE_TYPE_CONTACT, contactHandleId) + logging.info("Adding contact %r to group %r" % (contactHandle, self._handle)) + contact = contactHandle.contact + group = self._handle.group + if contact is not None: + addressBook.add_contact_to_group(group, contact) + else: + contactHandle.pending_groups.add(group) + + def RemoveMembers(self, contacts, message): + addressBook = self._conn.gvoice_client + if self._handle.group is None: + for contactHandleId in contacts: + contactHandle = self._conn.handle(telepathy.HANDLE_TYPE_CONTACT, contactHandleId) + logging.info("Adding contact %r to pending group %r" % (contactHandle, self._handle)) + if contactHandleId in self.__pending_add: + self.__pending_add.remove(contactHandleId) + else: + self.__pending_remove.append(contactHandleId) + return + else: + for contactHandleId in contacts: + contactHandle = self._conn.handle(telepathy.HANDLE_TYPE_CONTACT, contactHandleId) + logging.info("Removing contact %r from pending group %r" % (contactHandle, self._handle)) + contact = contactHandle.contact + group = self._handle.group + if contact is not None: + addressBook.delete_contact_from_group(group, contact) + else: + contactHandle.pending_groups.discard(group) + + def Close(self): + logging.debug("Deleting group %s" % self._handle.name) + addressBook = self._conn.gvoice_client + group = self._handle.group + addressBook.delete_group(group)