8 class TheOneRingGroupChannel(contact_list.TheOneRingListChannel):
10 def __init__(self, connection, h):
11 self.__pending_add = []
12 self.__pending_remove = []
13 contact_list.TheOneRingListChannel.__init__(self, connection, h)
14 self.GroupFlagsChanged(
15 telepathy.CHANNEL_GROUP_FLAG_CAN_ADD | telepathy.CHANNEL_GROUP_FLAG_CAN_REMOVE,
19 def AddMembers(self, contacts, message):
20 addressBook = self._conn.gvoice_client
21 if self._handle.group is None:
22 for contactHandleId in contacts:
23 contactHandle = self._conn.handle(telepathy.HANDLE_TYPE_CONTACT, contactHandleId)
24 logging.info("Adding contact %r to pending group %r" % (contactHandle, self._handle))
25 if contactHandleId in self.__pending_remove:
26 self.__pending_remove.remove(contactHandleId)
28 self.__pending_add.append(contactHandleId)
31 for contactHandleId in contacts:
32 contactHandle = self._conn.handle(telepathy.HANDLE_TYPE_CONTACT, contactHandleId)
33 logging.info("Adding contact %r to group %r" % (contactHandle, self._handle))
34 contact = contactHandle.contact
35 group = self._handle.group
36 if contact is not None:
37 addressBook.add_contact_to_group(group, contact)
39 contactHandle.pending_groups.add(group)
41 def RemoveMembers(self, contacts, message):
42 addressBook = self._conn.gvoice_client
43 if self._handle.group is None:
44 for contactHandleId in contacts:
45 contactHandle = self._conn.handle(telepathy.HANDLE_TYPE_CONTACT, contactHandleId)
46 logging.info("Adding contact %r to pending group %r" % (contactHandle, self._handle))
47 if contactHandleId in self.__pending_add:
48 self.__pending_add.remove(contactHandleId)
50 self.__pending_remove.append(contactHandleId)
53 for contactHandleId in contacts:
54 contactHandle = self._conn.handle(telepathy.HANDLE_TYPE_CONTACT, contactHandleId)
55 logging.info("Removing contact %r from pending group %r" % (contactHandle, self._handle))
56 contact = contactHandle.contact
57 group = self._handle.group
58 if contact is not None:
59 addressBook.delete_contact_from_group(group, contact)
61 contactHandle.pending_groups.discard(group)
64 logging.debug("Deleting group %s" % self._handle.name)
65 addressBook = self._conn.gvoice_client
66 group = self._handle.group
67 addressBook.delete_group(group)