ngc - invites, gc menu, callbacks etc
This commit is contained in:
parent
eed31bf61b
commit
ef4a1b18fd
12 changed files with 262 additions and 82 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue