ngc - invites, gc menu, callbacks etc

This commit is contained in:
ingvar1995 2018-05-19 18:08:25 +03:00
parent eed31bf61b
commit ef4a1b18fd
12 changed files with 262 additions and 82 deletions

View file

@ -1,13 +1,14 @@
from contacts import contact
from contacts.contact_menu import GroupMenuGenerator
import utils.util as util
from wrapper.toxcore_enums_and_consts import *
from groups.group_peer import GroupChatPeer
from wrapper import toxcore_enums_and_consts as constants
class GroupChat(contact.Contact):
def __init__(self, profile_manager, name, status_message, widget, tox, group_number):
super().__init__(None, group_number, profile_manager, name, status_message, widget, None)
def __init__(self, tox, profile_manager, message_getter, number, name, status_message, widget, tox_id):
super().__init__(profile_manager, message_getter, number, name, status_message, widget, tox_id)
self._tox = tox
self.set_status(constants.TOX_USER_STATUS['NONE'])
self._peers = []
@ -20,25 +21,29 @@ class GroupChat(contact.Contact):
def remove_invalid_unsent_files(self):
pass
def get_names(self):
peers_count = self._tox.group_number_peers(self._number)
names = []
for i in range(peers_count):
name = self._tox.group_peername(self._number, i)
names.append(name)
names = sorted(names, key=lambda n: n.lower())
return names
def get_context_menu_generator(self):
return GroupMenuGenerator(self)
def get_full_status(self):
names = self.get_names()
return '\n'.join(names)
def get_peer_name(self, peer_number):
return self._tox.group_peername(self._number, peer_number)
# -----------------------------------------------------------------------------------------------------------------
# Peers methods
# -----------------------------------------------------------------------------------------------------------------
def get_self_name(self):
return self._peers[0].name
def add_peer(self, peer_id):
peer = GroupChatPeer(peer_id,
self._tox.group_peer_get_name(self._number, peer_id),
self._tox.group_peer_get_status(self._number, peer_id),
self._tox.group_peer_get_role(self._number, peer_id),
self._tox.group_peer_get_public_key(self._number, peer_id))
self._peers.append(peer)
def get_peer(self, peer_id):
peers = list(filter(lambda p: p.id == peer_id, self._peers))
return peers[0]
# -----------------------------------------------------------------------------------------------------------------
# Private methods
# -----------------------------------------------------------------------------------------------------------------
@ -48,4 +53,5 @@ class GroupChat(contact.Contact):
return util.join_path(util.get_images_directory(), 'group.png')
def _add_self_to_gc(self):
pass
peer_id = self._tox.group_self_get_peer_id(self._number)
self.add_peer(peer_id)