2018-01-26 21:21:46 +01:00
|
|
|
from ui.list_items import *
|
2018-05-01 15:39:09 +02:00
|
|
|
from ui.messages_widgets import *
|
2016-10-22 20:55:34 +02:00
|
|
|
|
2018-05-03 23:17:48 +02:00
|
|
|
|
2018-05-15 16:00:12 +02:00
|
|
|
class FriendItemsFactory:
|
2016-10-22 20:55:34 +02:00
|
|
|
|
2018-05-15 16:00:12 +02:00
|
|
|
def __init__(self, settings, main_screen):
|
|
|
|
self._settings = settings
|
2018-05-01 15:39:09 +02:00
|
|
|
self._friends_list = main_screen.friends_list
|
2018-05-03 23:17:48 +02:00
|
|
|
|
2018-05-15 16:00:12 +02:00
|
|
|
def create_friend_item(self):
|
2018-04-30 21:28:33 +02:00
|
|
|
item = ContactItem(self._settings)
|
2018-05-01 15:39:09 +02:00
|
|
|
elem = QtWidgets.QListWidgetItem(self._friends_list)
|
2016-10-22 20:55:34 +02:00
|
|
|
elem.setSizeHint(QtCore.QSize(250, item.height()))
|
2018-05-01 15:39:09 +02:00
|
|
|
self._friends_list.addItem(elem)
|
|
|
|
self._friends_list.setItemWidget(elem, item)
|
2018-05-15 16:00:12 +02:00
|
|
|
|
2016-10-22 20:55:34 +02:00
|
|
|
return item
|
|
|
|
|
2018-05-15 16:00:12 +02:00
|
|
|
|
|
|
|
class MessagesItemsFactory:
|
|
|
|
|
|
|
|
def __init__(self, settings, plugin_loader, smiley_loader, main_screen, history):
|
|
|
|
self._settings, self._plugin_loader = settings, plugin_loader
|
|
|
|
self._smiley_loader, self._history = smiley_loader, history
|
|
|
|
self._messages = main_screen.messages
|
|
|
|
self._message_edit = main_screen.messageEdit
|
|
|
|
|
|
|
|
def create_message_item(self, message, append=True, pixmap=None):
|
|
|
|
item = message.get_widget(self._settings, self._create_message_browser,
|
|
|
|
self._history.delete_message, self._messages)
|
2016-10-22 20:55:34 +02:00
|
|
|
if pixmap is not None:
|
|
|
|
item.set_avatar(pixmap)
|
2017-06-11 14:35:52 +02:00
|
|
|
elem = QtWidgets.QListWidgetItem()
|
2016-10-22 20:55:34 +02:00
|
|
|
elem.setSizeHint(QtCore.QSize(self._messages.width(), item.height()))
|
|
|
|
if append:
|
|
|
|
self._messages.addItem(elem)
|
|
|
|
else:
|
|
|
|
self._messages.insertItem(0, elem)
|
|
|
|
self._messages.setItemWidget(elem, item)
|
2018-05-15 16:00:12 +02:00
|
|
|
|
2016-10-22 20:55:34 +02:00
|
|
|
return item
|
|
|
|
|
2018-05-15 16:00:12 +02:00
|
|
|
def create_inline_item(self, data, append):
|
2017-06-11 14:35:52 +02:00
|
|
|
elem = QtWidgets.QListWidgetItem()
|
2016-10-22 20:55:34 +02:00
|
|
|
item = InlineImageItem(data, self._messages.width(), elem)
|
|
|
|
elem.setSizeHint(QtCore.QSize(self._messages.width(), item.height()))
|
|
|
|
if append:
|
|
|
|
self._messages.addItem(elem)
|
|
|
|
else:
|
|
|
|
self._messages.insertItem(0, elem)
|
|
|
|
self._messages.setItemWidget(elem, item)
|
2018-05-15 16:00:12 +02:00
|
|
|
|
2016-10-22 20:55:34 +02:00
|
|
|
return item
|
|
|
|
|
2018-05-15 16:00:12 +02:00
|
|
|
def create_unsent_file_item(self, file_name, size, name, time, append):
|
2016-10-22 20:55:34 +02:00
|
|
|
item = UnsentFileItem(file_name,
|
|
|
|
size,
|
|
|
|
name,
|
|
|
|
time,
|
|
|
|
self._messages.width())
|
2017-06-11 14:35:52 +02:00
|
|
|
elem = QtWidgets.QListWidgetItem()
|
2016-10-22 20:55:34 +02:00
|
|
|
elem.setSizeHint(QtCore.QSize(self._messages.width() - 30, 34))
|
|
|
|
if append:
|
|
|
|
self._messages.addItem(elem)
|
|
|
|
else:
|
|
|
|
self._messages.insertItem(0, elem)
|
|
|
|
self._messages.setItemWidget(elem, item)
|
2018-05-15 16:00:12 +02:00
|
|
|
|
2016-10-22 20:55:34 +02:00
|
|
|
return item
|
|
|
|
|
2018-05-15 16:00:12 +02:00
|
|
|
def create_file_transfer_item(self, data, append):
|
2016-10-22 20:55:34 +02:00
|
|
|
data.append(self._messages.width())
|
|
|
|
item = FileTransferItem(*data)
|
2017-06-11 14:35:52 +02:00
|
|
|
elem = QtWidgets.QListWidgetItem()
|
2016-10-22 20:55:34 +02:00
|
|
|
elem.setSizeHint(QtCore.QSize(self._messages.width() - 30, 34))
|
|
|
|
if append:
|
|
|
|
self._messages.addItem(elem)
|
|
|
|
else:
|
|
|
|
self._messages.insertItem(0, elem)
|
|
|
|
self._messages.setItemWidget(elem, item)
|
2018-05-15 16:00:12 +02:00
|
|
|
|
2016-10-22 20:55:34 +02:00
|
|
|
return item
|
2018-05-04 23:09:33 +02:00
|
|
|
|
2018-05-15 16:00:12 +02:00
|
|
|
# -----------------------------------------------------------------------------------------------------------------
|
|
|
|
# Private methods
|
|
|
|
# -----------------------------------------------------------------------------------------------------------------
|
|
|
|
|
2018-05-04 23:09:33 +02:00
|
|
|
def _create_message_browser(self, text, width, message_type, parent=None):
|
|
|
|
return MessageBrowser(self._settings, self._message_edit, self._smiley_loader, self._plugin_loader,
|
|
|
|
text, width, message_type, parent)
|