minimal working ngc version - sending messages, invites, char creation
This commit is contained in:
parent
ef4a1b18fd
commit
a935d602f8
6 changed files with 43 additions and 17 deletions
File diff suppressed because one or more lines are too long
|
@ -50,6 +50,9 @@ class ContactsManager:
|
||||||
|
|
||||||
return self.get_curr_contact().number == group_number
|
return self.get_curr_contact().number == group_number
|
||||||
|
|
||||||
|
def is_contact_active(self, contact):
|
||||||
|
return self._contacts[self._active_contact].tox_id == contact.tox_id
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
# Work with active friend
|
# Work with active friend
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -39,7 +39,7 @@ class GroupChat(contact.Contact):
|
||||||
self._tox.group_peer_get_public_key(self._number, peer_id))
|
self._tox.group_peer_get_public_key(self._number, peer_id))
|
||||||
self._peers.append(peer)
|
self._peers.append(peer)
|
||||||
|
|
||||||
def get_peer(self, peer_id):
|
def get_peer_by_id(self, peer_id):
|
||||||
peers = list(filter(lambda p: p.id == peer_id, self._peers))
|
peers = list(filter(lambda p: p.id == peer_id, self._peers))
|
||||||
|
|
||||||
return peers[0]
|
return peers[0]
|
||||||
|
|
|
@ -14,7 +14,7 @@ class GroupsService(tox_save.ToxSave):
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
def create_new_gc(self, name, privacy_state):
|
def create_new_gc(self, name, privacy_state):
|
||||||
group_number = self._tox.group_new(privacy_state, name)
|
group_number = self._tox.group_new(privacy_state, name.encode('utf-8'))
|
||||||
self._add_new_group_by_number(group_number)
|
self._add_new_group_by_number(group_number)
|
||||||
|
|
||||||
def join_gc_by_id(self, chat_id, password):
|
def join_gc_by_id(self, chat_id, password):
|
||||||
|
@ -48,6 +48,14 @@ class GroupsService(tox_save.ToxSave):
|
||||||
if util_ui.question(text.format(friend.name), util_ui.tr('Group invite')):
|
if util_ui.question(text.format(friend.name), util_ui.tr('Group invite')):
|
||||||
self.join_gc_via_invite(invite_data, friend_number, None)
|
self.join_gc_via_invite(invite_data, friend_number, None)
|
||||||
|
|
||||||
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
# Group info methods
|
||||||
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
def update_group_info(self, group):
|
||||||
|
group.name = self._tox.group_get_name(group.number).encode('utf-8')
|
||||||
|
group.status_message = self._tox.group_get_topic(group.number).encode('utf-8')
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
# Private methods
|
# Private methods
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -41,16 +41,7 @@ class Messenger(tox_save.ToxSave):
|
||||||
t = util.get_unix_time()
|
t = util.get_unix_time()
|
||||||
friend = self._get_friend_by_number(friend_number)
|
friend = self._get_friend_by_number(friend_number)
|
||||||
text_message = TextMessage(message, MessageAuthor(friend.name, MESSAGE_AUTHOR['FRIEND']), t, message_type)
|
text_message = TextMessage(message, MessageAuthor(friend.name, MESSAGE_AUTHOR['FRIEND']), t, message_type)
|
||||||
|
self._add_message(text_message, friend)
|
||||||
if self._contacts_manager.is_friend_active(friend_number): # add message to list
|
|
||||||
self._create_message_item(text_message)
|
|
||||||
self._screen.messages.scrollToBottom()
|
|
||||||
self._contacts_manager.get_curr_contact().append_message(text_message)
|
|
||||||
else:
|
|
||||||
friend.inc_messages()
|
|
||||||
friend.append_message(text_message)
|
|
||||||
if not friend.visibility:
|
|
||||||
self._contacts_manager.update_filtration()
|
|
||||||
|
|
||||||
def send_message(self):
|
def send_message(self):
|
||||||
text = self._screen.messageEdit.toPlainText()
|
text = self._screen.messageEdit.toPlainText()
|
||||||
|
@ -135,6 +126,18 @@ class Messenger(tox_save.ToxSave):
|
||||||
self._screen.messageEdit.clear()
|
self._screen.messageEdit.clear()
|
||||||
self._screen.messages.scrollToBottom()
|
self._screen.messages.scrollToBottom()
|
||||||
|
|
||||||
|
def new_group_message(self, group_number, message_type, message, peer_id):
|
||||||
|
"""
|
||||||
|
Current user gets new message
|
||||||
|
:param message_type: message type - plain text or action message (/me)
|
||||||
|
:param message: text of message
|
||||||
|
"""
|
||||||
|
t = util.get_unix_time()
|
||||||
|
group = self._get_group_by_number(group_number)
|
||||||
|
peer = group.get_peer_by_id(peer_id)
|
||||||
|
text_message = TextMessage(message, MessageAuthor(peer.name, MESSAGE_AUTHOR['GC_PEER']), t, message_type)
|
||||||
|
self._add_message(text_message, group)
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
# Message receipts
|
# Message receipts
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
@ -229,3 +232,14 @@ class Messenger(tox_save.ToxSave):
|
||||||
def _create_info_message_item(self, message):
|
def _create_info_message_item(self, message):
|
||||||
self._items_factory.create_message_item(message)
|
self._items_factory.create_message_item(message)
|
||||||
self._screen.messages.scrollToBottom()
|
self._screen.messages.scrollToBottom()
|
||||||
|
|
||||||
|
def _add_message(self, text_message, contact):
|
||||||
|
if self._contacts_manager.is_contact_active(contact): # add message to list
|
||||||
|
self._create_message_item(text_message)
|
||||||
|
self._screen.messages.scrollToBottom()
|
||||||
|
self._contacts_manager.get_curr_contact().append_message(text_message)
|
||||||
|
else:
|
||||||
|
contact.inc_messages()
|
||||||
|
contact.append_message(text_message)
|
||||||
|
if not contact.visibility:
|
||||||
|
self._contacts_manager.update_filtration()
|
||||||
|
|
|
@ -388,10 +388,11 @@ def group_invite(groups_service):
|
||||||
return wrapped
|
return wrapped
|
||||||
|
|
||||||
|
|
||||||
def group_self_join(contacts_provider):
|
def group_self_join(contacts_provider, groups_service):
|
||||||
def wrapped(tox, group_number, user_data):
|
def wrapped(tox, group_number, user_data):
|
||||||
group = contacts_provider.get_group_by_number(group_number)
|
group = contacts_provider.get_group_by_number(group_number)
|
||||||
invoke_in_main_thread(group.set_status, TOX_USER_STATUS['NONE'])
|
invoke_in_main_thread(group.set_status, TOX_USER_STATUS['NONE'])
|
||||||
|
invoke_in_main_thread(groups_service.update_group_info, group)
|
||||||
|
|
||||||
return wrapped
|
return wrapped
|
||||||
|
|
||||||
|
@ -407,7 +408,7 @@ def group_peer_join(contacts_provider):
|
||||||
def group_peer_name(contacts_provider):
|
def group_peer_name(contacts_provider):
|
||||||
def wrapped(tox, group_number, peer_id, name, length, user_data):
|
def wrapped(tox, group_number, peer_id, name, length, user_data):
|
||||||
group = contacts_provider.get_group_by_number(group_number)
|
group = contacts_provider.get_group_by_number(group_number)
|
||||||
peer = group.get_peer(peer_id)
|
peer = group.get_peer_by_id(peer_id)
|
||||||
peer.name = str(name[:length])
|
peer.name = str(name[:length])
|
||||||
|
|
||||||
return wrapped
|
return wrapped
|
||||||
|
@ -416,7 +417,7 @@ def group_peer_name(contacts_provider):
|
||||||
def group_peer_status(contacts_provider):
|
def group_peer_status(contacts_provider):
|
||||||
def wrapped(tox, group_number, peer_id, peer_status, user_data):
|
def wrapped(tox, group_number, peer_id, peer_status, user_data):
|
||||||
group = contacts_provider.get_group_by_number(group_number)
|
group = contacts_provider.get_group_by_number(group_number)
|
||||||
peer = group.get_peer(peer_id)
|
peer = group.get_peer_by_id(peer_id)
|
||||||
peer.status = peer_status
|
peer.status = peer_status
|
||||||
|
|
||||||
return wrapped
|
return wrapped
|
||||||
|
@ -479,7 +480,7 @@ def init_callbacks(tox, profile, settings, plugin_loader, contacts_manager,
|
||||||
# gc callbacks
|
# gc callbacks
|
||||||
tox.callback_group_message(group_message(main_window, tray, tox, messenger, settings, profile), 0)
|
tox.callback_group_message(group_message(main_window, tray, tox, messenger, settings, profile), 0)
|
||||||
tox.callback_group_invite(group_invite(groups_service), 0)
|
tox.callback_group_invite(group_invite(groups_service), 0)
|
||||||
tox.callback_group_self_join(group_self_join(contacts_provider), 0)
|
tox.callback_group_self_join(group_self_join(contacts_provider, groups_service), 0)
|
||||||
tox.callback_group_peer_join(group_peer_join(contacts_provider), 0)
|
tox.callback_group_peer_join(group_peer_join(contacts_provider), 0)
|
||||||
tox.callback_group_peer_name(group_peer_name(contacts_provider), 0)
|
tox.callback_group_peer_name(group_peer_name(contacts_provider), 0)
|
||||||
tox.callback_group_peer_status(group_peer_status(contacts_provider), 0)
|
tox.callback_group_peer_status(group_peer_status(contacts_provider), 0)
|
||||||
|
|
Loading…
Reference in a new issue