widgets fixes

This commit is contained in:
ingvar1995 2018-05-15 13:40:59 +03:00
parent e21a9355e7
commit 98dbe6a493
6 changed files with 28 additions and 27 deletions

View file

@ -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)

View file

@ -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()

View file

@ -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()

View file

@ -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(),

View file

@ -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)

View file

@ -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)