diff --git a/toxygen/contacts/contacts_manager.py b/toxygen/contacts/contacts_manager.py index c1d0b10..4a5454b 100644 --- a/toxygen/contacts/contacts_manager.py +++ b/toxygen/contacts/contacts_manager.py @@ -179,7 +179,11 @@ class ContactsManager(ToxSave): part2 = sorted(part2, key=key_lambda) self._contacts = part1 + part2 elif sorting == 0: - self._contacts = sorted(self._contacts, key=lambda x: x.number) + contacts = sorted(self._contacts, key=lambda c: c.number) + friends = filter(lambda c: type(c) is Friend, contacts) + groups = filter(lambda c: type(c) is GroupChat, contacts) + group_peers = filter(lambda c: type(c) is GroupPeerContact, contacts) + self._contacts = list(friends) + list(groups) + list(group_peers) else: self._contacts = sorted(self._contacts, key=lambda x: x.name.lower()) @@ -194,6 +198,7 @@ class ContactsManager(ToxSave): friend.visibility = (friend.status is not None or sorting not in (1, 4)) and filtered_by_name # show friend even if it's hidden when there any unread messages/actions friend.visibility = friend.visibility or friend.messages or friend.actions + # TODO: calculate height if friend.visibility: self._screen.friends_list.item(index).setSizeHint(QtCore.QSize(250, self._friend_item_height)) else: @@ -542,10 +547,7 @@ class ContactsManager(ToxSave): remove(avatar_path) def _delete_contact(self, num): - if len(self._contacts) == 1: - self.set_active(-1) - else: - self.set_active(0) + self.set_active(-1 if len(self._contacts) == 1 else 0) self._contact_provider.remove_contact_from_cache(self._contacts[num].tox_id) del self._contacts[num] diff --git a/toxygen/groups/groups_service.py b/toxygen/groups/groups_service.py index c062685..1016bd7 100644 --- a/toxygen/groups/groups_service.py +++ b/toxygen/groups/groups_service.py @@ -104,7 +104,7 @@ class GroupsService(tox_save.ToxSave): def set_group_topic(self, group): if not group.is_moderator_or_founder(): return - text = util_ui.tr('New topic for group {}:'.format(group.name)) + text = util_ui.tr('New topic for group "{}":'.format(group.name)) title = util_ui.tr('Set group topic') topic, ok = util_ui.text_dialog(text, title, group.status_message) if not ok or not topic: @@ -151,6 +151,7 @@ class GroupsService(tox_save.ToxSave): self_peer = group.get_self_peer() self_peer.name = name self_peer.status = status + self.generate_peers_list() # ----------------------------------------------------------------------------------------------------------------- # Private methods diff --git a/toxygen/wrapper/tox.py b/toxygen/wrapper/tox.py index 782020c..ebb6aee 100644 --- a/toxygen/wrapper/tox.py +++ b/toxygen/wrapper/tox.py @@ -1940,6 +1940,13 @@ class Tox: result = Tox.libtoxcore.tox_group_get_number_groups(self._tox_pointer) return result + def groups_get_list(self): + groups_list_size = self.group_get_number_groups() + groups_list = create_string_buffer(sizeof(c_uint32) * groups_list_size) + groups_list = POINTER(c_uint32)(groups_list) + Tox.libtoxcore.tox_groups_get_list(self._tox_pointer, groups_list) + return groups_list[0:groups_list_size] + def group_get_privacy_state(self, group_number): """ Return the privacy state of the group designated by the given group number. If group number @@ -2461,7 +2468,7 @@ class Tox: create_string_buffer(sizeof(c_uint32) * self.group_ban_get_list_size(group_number)), byref(error))) return result - def group_ban_get_name_size(self, group_number, ban_id): + def group_ban_get_target_size(self, group_number, ban_id): """ Return the length of the name for the ban list entry designated by ban_id, in the group designated by the given group number. If either group_number or ban_id is invalid, @@ -2469,10 +2476,10 @@ class Tox: """ error = c_int() - result = Tox.libtoxcore.tox_group_ban_get_name_size(self._tox_pointer, group_number, ban_id, byref(error)) + result = Tox.libtoxcore.tox_group_ban_get_target_size(self._tox_pointer, group_number, ban_id, byref(error)) return result - def group_ban_get_name(self, group_number, ban_id): + def group_ban_get_target(self, group_number, ban_id): """ Write the name of the ban entry designated by ban_id in the group designated by the given group number to a byte array. @@ -2483,12 +2490,12 @@ class Tox: """ error = c_int() - size = self.group_ban_get_name_size(group_number, ban_id) - name = create_string_buffer() + size = self.group_ban_get_target_size(group_number, ban_id) + target = create_string_buffer(size) - result = Tox.libtoxcore.tox_group_ban_get_name(self._tox_pointer, group_number, ban_id, - name, byref(error)) - return str(name[:size], 'utf-8') + result = Tox.libtoxcore.tox_group_ban_get_target(self._tox_pointer, group_number, ban_id, + target, byref(error)) + return str(target[:size], 'utf-8') def group_ban_get_time_set(self, group_number, ban_id): """