history loading after friend switching. refactoring

This commit is contained in:
ingvar1995 2018-05-15 17:00:12 +03:00
parent 98dbe6a493
commit f1c63bb4e8
15 changed files with 135 additions and 144 deletions

View file

@ -1,28 +1,34 @@
from ui.list_items import *
from ui.messages_widgets import *
# rename methods
class FriendItemsFactory:
class ItemsFactory:
def __init__(self, settings, plugin_loader, smiley_loader, main_screen):
self._settings, self._plugin_loader = settings, plugin_loader
self._smiley_loader = smiley_loader
self._messages = main_screen.messages
def __init__(self, settings, main_screen):
self._settings = settings
self._friends_list = main_screen.friends_list
self._message_edit = main_screen.messageEdit
def friend_item(self):
def create_friend_item(self):
item = ContactItem(self._settings)
elem = QtWidgets.QListWidgetItem(self._friends_list)
elem.setSizeHint(QtCore.QSize(250, item.height()))
self._friends_list.addItem(elem)
self._friends_list.setItemWidget(elem, item)
return item
def message_item(self, message, append=True, pixmap=None):
item = MessageItem(self._settings, self._create_message_browser, message, self._messages)
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)
if pixmap is not None:
item.set_avatar(pixmap)
elem = QtWidgets.QListWidgetItem()
@ -32,9 +38,10 @@ class ItemsFactory:
else:
self._messages.insertItem(0, elem)
self._messages.setItemWidget(elem, item)
return item
def inline_item(self, data, append):
def create_inline_item(self, data, append):
elem = QtWidgets.QListWidgetItem()
item = InlineImageItem(data, self._messages.width(), elem)
elem.setSizeHint(QtCore.QSize(self._messages.width(), item.height()))
@ -43,9 +50,10 @@ class ItemsFactory:
else:
self._messages.insertItem(0, elem)
self._messages.setItemWidget(elem, item)
return item
def unsent_file_item(self, file_name, size, name, time, append):
def create_unsent_file_item(self, file_name, size, name, time, append):
item = UnsentFileItem(file_name,
size,
name,
@ -58,9 +66,10 @@ class ItemsFactory:
else:
self._messages.insertItem(0, elem)
self._messages.setItemWidget(elem, item)
return item
def file_transfer_item(self, data, append):
def create_file_transfer_item(self, data, append):
data.append(self._messages.width())
item = FileTransferItem(*data)
elem = QtWidgets.QListWidgetItem()
@ -70,8 +79,13 @@ class ItemsFactory:
else:
self._messages.insertItem(0, elem)
self._messages.setItemWidget(elem, item)
return item
# -----------------------------------------------------------------------------------------------------------------
# Private methods
# -----------------------------------------------------------------------------------------------------------------
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)

View file

@ -4,10 +4,7 @@ from contacts import profile
from file_transfers.file_transfers import TOX_FILE_TRANSFER_STATE, PAUSED_FILE_TRANSFERS, DO_NOT_SHOW_ACCEPT_BUTTON, ACTIVE_FILE_TRANSFERS, SHOW_PROGRESS_BAR
from utils.util import *
from ui.widgets import DataLabel, create_menu
import html as h
import smileys
from user_data import settings
import re
class ContactItem(QtWidgets.QWidget):

View file

@ -604,11 +604,13 @@ class MainWindow(QtWidgets.QMainWindow):
extension = 'txt' if as_text else 'html'
file_name, _ = util_ui.save_file_dialog(util_ui.tr('Choose file name'), extension)
if file_name:
if not file_name.endswith('.' + extension):
file_name += '.' + extension
with open(file_name, 'wt') as fl:
fl.write(s)
if not file_name:
return
if not file_name.endswith('.' + extension):
file_name += '.' + extension
with open(file_name, 'wt') as fl:
fl.write(s)
def set_alias(self, num):
self._contacts_manager.set_alias(num)

View file

@ -1,6 +1,5 @@
from PyQt5 import QtCore, QtGui, QtWidgets
from user_data.settings import *
from contacts.profile import Profile
from utils.util import *
from ui.widgets import CenteredWidget, DataLabel, LineEdit, RubberBandWindow
import pyaudio
@ -717,7 +716,6 @@ class InterfaceSettings(CenteredWidget):
app.translator.load(curr_directory() + '/translations/' + path)
app.installTranslator(app.translator)
self._settings['message_font_size'] = self.messages_font_size.currentIndex() + 10
Profile.get_instance().update()
self._settings.save()
if restart:
util_ui.message_box(util_ui.tr('Restart app to apply settings'), util_ui.tr('Restart required'))

View file

@ -115,7 +115,7 @@ class MessageBrowser(QtWidgets.QTextBrowser):
if arr[i].startswith('>'):
arr[i] = '<font color="green"><b>' + arr[i][4:] + '</b></font>'
text = '<br>'.join(arr)
text = self._smileys_loader.add_smileys_to_text(text, self) # smileys
text = self._smileys_loader.add_smileys_to_text(text, self)
return text
@ -123,8 +123,10 @@ class MessageItem(QtWidgets.QWidget):
"""
Message in messages list
"""
def __init__(self, settings, message_browser_factory_method, text_message, parent=None):
def __init__(self, text_message, settings, message_browser_factory_method, delete_action, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self._message = text_message
self._delete_action = delete_action
self.name = widgets.DataLabel(self)
self.name.setGeometry(QtCore.QRect(2, 2, 95, 23))
self.name.setTextFormat(QtCore.Qt.PlainText)
@ -169,12 +171,11 @@ class MessageItem(QtWidgets.QWidget):
self.listMenu.show()
def delete(self):
pr = profile.Profile.get_instance()
pr.delete_message(self._time)
self._delete_action(self._message)
def mark_as_sent(self):
if self.t:
self.time.setText(convert_time(self._time))
self.time.setText(util.convert_time(self._time))
self.t = False
return True
return False