widgets fixes
This commit is contained in:
parent
e21a9355e7
commit
98dbe6a493
@ -303,12 +303,12 @@ class App:
|
||||
self._contacts_provider = ContactProvider(self._tox, self._friend_factory)
|
||||
self._contacts_manager = ContactsManager(self._tox, self._settings, self._ms, self._profile_manager,
|
||||
self._contacts_provider, db, self._tox_dns)
|
||||
self._messenger = Messenger(self._tox, self._plugin_loader, self._ms, self._contacts_manager,
|
||||
self._contacts_provider, items_factory, profile)
|
||||
self._file_transfer_handler = FileTransfersHandler(self._tox, self._settings, self._contacts_provider)
|
||||
widgets_factory = WidgetsFactory(self._settings, profile, self._profile_manager, self._contacts_manager,
|
||||
self._file_transfer_handler, self._smiley_loader, self._plugin_loader,
|
||||
self._toxes, self._version)
|
||||
self._messenger = Messenger(self._tox, self._plugin_loader, self._ms, self._contacts_manager,
|
||||
self._contacts_provider, items_factory, profile)
|
||||
self._tray = tray.init_tray(profile, self._settings, self._ms)
|
||||
self._ms.set_dependencies(widgets_factory, self._tray, self._contacts_manager, self._messenger, profile,
|
||||
self._plugin_loader)
|
||||
|
@ -43,7 +43,7 @@ class ContactsManager:
|
||||
self._profile_manager.save_profile(data)
|
||||
|
||||
def is_friend_active(self, friend_number):
|
||||
if not self._is_active_a_friend():
|
||||
if not self.is_active_a_friend():
|
||||
return False
|
||||
|
||||
return self.get_curr_contact().number == friend_number
|
||||
@ -148,6 +148,8 @@ class ContactsManager:
|
||||
util.log('Error in set active: ' + str(ex))
|
||||
raise
|
||||
|
||||
active_friend = property(get_active, set_active)
|
||||
|
||||
def set_active_by_number_and_type(self, number, is_friend):
|
||||
for i in range(len(self._contacts)):
|
||||
c = self._contacts[i]
|
||||
@ -155,12 +157,13 @@ class ContactsManager:
|
||||
self._active_contact = i
|
||||
break
|
||||
|
||||
active_friend = property(get_active, set_active)
|
||||
|
||||
def update(self):
|
||||
if self._active_contact + 1:
|
||||
self.set_active(self._active_contact)
|
||||
|
||||
def is_active_a_friend(self):
|
||||
return type(self.get_curr_contact()) is Friend
|
||||
|
||||
# -----------------------------------------------------------------------------------------------------------------
|
||||
# Filtration
|
||||
# -----------------------------------------------------------------------------------------------------------------
|
||||
@ -174,7 +177,7 @@ class ContactsManager:
|
||||
# TODO: simplify?
|
||||
filter_str = filter_str.lower()
|
||||
number = self.get_active_number()
|
||||
is_friend = self._is_active_a_friend()
|
||||
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)
|
||||
@ -424,9 +427,6 @@ class ContactsManager:
|
||||
# Private methods
|
||||
# -----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
def _is_active_a_friend(self):
|
||||
return type(self.get_curr_contact()) is Friend
|
||||
|
||||
def _load_contacts(self):
|
||||
self._load_friends()
|
||||
self._load_groups()
|
||||
|
@ -179,25 +179,23 @@ class FileTransfersHandler:
|
||||
self._get_friend_by_number(friend_number).update_transfer_data(file_number,
|
||||
TOX_FILE_TRANSFER_STATE['RUNNING'])
|
||||
|
||||
def send_screenshot(self, data):
|
||||
def send_screenshot(self, data, friend_number):
|
||||
"""
|
||||
Send screenshot to current active friend
|
||||
:param data: raw data - png
|
||||
"""
|
||||
self.send_inline(data, 'toxygen_inline.png')
|
||||
self.send_inline(data, 'toxygen_inline.png', friend_number)
|
||||
|
||||
def send_sticker(self, path):
|
||||
def send_sticker(self, path, friend_number):
|
||||
with open(path, 'rb') as fl:
|
||||
data = fl.read()
|
||||
self.send_inline(data, 'sticker.png')
|
||||
self.send_inline(data, 'sticker.png', friend_number)
|
||||
|
||||
def send_inline(self, data, file_name, friend_number=None, is_resend=False):
|
||||
friend_number = friend_number or self.get_active_number()
|
||||
def send_inline(self, data, file_name, friend_number, is_resend=False):
|
||||
friend = self._get_friend_by_number(friend_number)
|
||||
if friend.status is None and not is_resend:
|
||||
m = UnsentFile(file_name, data, time.time())
|
||||
friend.append_message(m)
|
||||
self.update()
|
||||
return
|
||||
elif friend.status is None and is_resend:
|
||||
raise RuntimeError()
|
||||
|
@ -542,7 +542,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||
def send_sticker(self):
|
||||
self.menu.hide()
|
||||
if self._contacts_manager.is_active_a_friend():
|
||||
self.sticker = self._widget_factory.create_sticker_window(self)
|
||||
self.sticker = self._widget_factory.create_sticker_window()
|
||||
self.sticker.setGeometry(QtCore.QRect(self.x() if self._settings['mirror_mode'] else 270 + self.x(),
|
||||
self.y() + self.height() - 200,
|
||||
self.sticker.width(),
|
||||
|
@ -81,7 +81,8 @@ class MessageArea(QtWidgets.QPlainTextEdit):
|
||||
else:
|
||||
self.insertPlainText(text)
|
||||
|
||||
def parse_file_name(self, file_name):
|
||||
@staticmethod
|
||||
def parse_file_name(file_name):
|
||||
if file_name.endswith('\r\n'):
|
||||
file_name = file_name[:-2]
|
||||
file_name = urllib.parse.unquote(file_name)
|
||||
@ -90,9 +91,10 @@ class MessageArea(QtWidgets.QPlainTextEdit):
|
||||
|
||||
class ScreenShotWindow(RubberBandWindow):
|
||||
|
||||
def __init__(self, file_transfer_handler, *args):
|
||||
def __init__(self, file_transfer_handler, contacts_manager, *args):
|
||||
super().__init__(*args)
|
||||
self._file_transfer_handler = file_transfer_handler
|
||||
self._contacts_manager = contacts_manager
|
||||
|
||||
def closeEvent(self, *args):
|
||||
if self.parent.isHidden():
|
||||
@ -113,7 +115,8 @@ class ScreenShotWindow(RubberBandWindow):
|
||||
buffer = QtCore.QBuffer(byte_array)
|
||||
buffer.open(QtCore.QIODevice.WriteOnly)
|
||||
p.save(buffer, 'PNG')
|
||||
self._file_transfer_handler.send_screenshot(bytes(byte_array.data()))
|
||||
friend = self._contacts_manager.get_curr_contact()
|
||||
self._file_transfer_handler.send_screenshot(bytes(byte_array.data(), friend.number))
|
||||
self.close()
|
||||
|
||||
|
||||
@ -267,9 +270,10 @@ class StickerItem(QtWidgets.QWidget):
|
||||
class StickerWindow(QtWidgets.QWidget):
|
||||
"""Sticker selection window"""
|
||||
|
||||
def __init__(self, parent, file_transfer_handler):
|
||||
def __init__(self, file_transfer_handler, contacts_manager):
|
||||
super().__init__()
|
||||
self._file_transfer_handler = file_transfer_handler
|
||||
self._contacts_manager = contacts_manager
|
||||
self.setWindowFlags(QtCore.Qt.FramelessWindowHint)
|
||||
self.setMaximumSize(250, 200)
|
||||
self.setMinimumSize(250, 200)
|
||||
@ -285,11 +289,11 @@ class StickerWindow(QtWidgets.QWidget):
|
||||
self.list.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
|
||||
self.list.setSpacing(3)
|
||||
self.list.clicked.connect(self.click)
|
||||
self.parent = parent
|
||||
|
||||
def click(self, index):
|
||||
num = index.row()
|
||||
self._file_transfer_handler.send_sticker(self._stickers[num])
|
||||
friend = self._contacts_manager.get_curr_contact()
|
||||
self._file_transfer_handler.send_sticker(self._stickers[num], friend.number)
|
||||
self.close()
|
||||
|
||||
def leaveEvent(self, event):
|
||||
@ -465,7 +469,6 @@ class SearchScreen(QtWidgets.QWidget):
|
||||
self.not_found(text)
|
||||
|
||||
def closeEvent(self, *args):
|
||||
Profile.get_instance().update()
|
||||
self._messages.setGeometry(0, 0, self._messages.width(), self._messages.height() + 40)
|
||||
super().closeEvent(*args)
|
||||
|
||||
|
@ -17,7 +17,7 @@ class WidgetsFactory:
|
||||
self._version = version
|
||||
|
||||
def create_screenshot_window(self, *args):
|
||||
return ScreenShotWindow(self._file_transfer_handler, *args)
|
||||
return ScreenShotWindow(self._file_transfer_handler, self._contacts_manager, *args)
|
||||
|
||||
def create_smiley_window(self, parent):
|
||||
return SmileyWindow(parent, self._smiley_loader)
|
||||
@ -61,5 +61,5 @@ class WidgetsFactory:
|
||||
def create_smiley_window(self, parent):
|
||||
return SmileyWindow(parent, self._smiley_loader)
|
||||
|
||||
def create_sticker_window(self, parent):
|
||||
return StickerWindow(parent, self._file_transfer_handler)
|
||||
def create_sticker_window(self):
|
||||
return StickerWindow(self._file_transfer_handler, self._contacts_manager)
|
||||
|
Loading…
Reference in New Issue
Block a user