tab && bug fix

This commit is contained in:
ingvar1995 2017-07-18 23:36:40 +03:00
parent 65167de1fe
commit 1ea919bdc2
3 changed files with 26 additions and 4 deletions

View File

@ -32,11 +32,15 @@ class GroupChat(contact.Contact):
def remove_invalid_unsent_files(self):
pass
def get_full_status(self):
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_full_status(self):
names = self.get_names()
return '\n'.join(names)

View File

@ -34,6 +34,10 @@ class MessageArea(QtWidgets.QPlainTextEdit):
self.parent.send_message()
elif event.key() == QtCore.Qt.Key_Up and not self.toPlainText():
self.appendPlainText(Profile.get_instance().get_last_message())
elif event.key() == QtCore.Qt.Key_Tab and not self.parent.profile.is_active_a_friend():
text = self.toPlainText()
pos = self.textCursor().position()
self.insertPlainText(Profile.get_instance().get_gc_peer_name(text[:pos]))
else:
self.parent.profile.send_typing(True)
if self.timer.isActive():

View File

@ -17,6 +17,7 @@ import items_factory
import cv2
import threading
from group_chat import *
import re
class Profile(basecontact.BaseContact, Singleton):
@ -130,6 +131,7 @@ class Profile(basecontact.BaseContact, Singleton):
filter_str = filter_str.lower()
settings = Settings.get_instance()
number = self.get_active_number()
is_friend = self.is_active_a_friend()
if sorting > 1:
if sorting & 2:
self._contacts = sorted(self._contacts, key=lambda x: int(x.status is not None), reverse=True)
@ -165,7 +167,7 @@ class Profile(basecontact.BaseContact, Singleton):
self._sorting, self._filter_string = sorting, filter_str
settings['sorting'] = self._sorting
settings.save()
self.set_active_by_number(number)
self.set_active_by_number_and_type(number, is_friend)
def update_filtration(self):
"""
@ -291,9 +293,10 @@ class Profile(basecontact.BaseContact, Singleton):
log('Error in set active: ' + str(ex))
raise
def set_active_by_number(self, number):
def set_active_by_number_and_type(self, number, is_friend):
for i in range(len(self._contacts)):
if self._contacts[i].number == number:
c = self._contacts[i]
if c.number == number and (type(c) is Friend == is_friend):
self._active_friend = i
break
@ -1402,6 +1405,17 @@ class Profile(basecontact.BaseContact, Singleton):
friend = self._contacts[friend_num]
self._tox.invite_friend(friend.number, group_number)
def get_gc_peer_name(self, text):
gc = self.get_curr_friend()
if type(gc) is not GroupChat:
return '\t'
names = gc.get_names()
name = re.split("\s+", text)[-1]
suggested_names = list(filter(lambda x: x.startswith(name), names))
if not len(suggested_names):
return '\t'
return suggested_names[0][len(name):]
def tox_factory(data=None, settings=None):
"""