various fixes - peers list, resize event, tox instance recreation
This commit is contained in:
parent
02af0f7671
commit
b8fa8df41a
18 changed files with 97 additions and 51 deletions
|
@ -8,7 +8,7 @@ class PeerItem(QtWidgets.QWidget):
|
|||
super().__init__(parent)
|
||||
self.resize(QtCore.QSize(width, 34))
|
||||
self.nameLabel = DataLabel(self)
|
||||
self.nameLabel.setGeometry(0, 0, width, 34)
|
||||
self.nameLabel.setGeometry(5, 0, width - 5, 34)
|
||||
name = peer.name
|
||||
if peer.is_current_user:
|
||||
name += util_ui.tr(' (You)')
|
||||
|
@ -29,5 +29,5 @@ class PeerTypeItem(QtWidgets.QWidget):
|
|||
super().__init__(parent)
|
||||
self.resize(QtCore.QSize(width, 34))
|
||||
self.nameLabel = DataLabel(self)
|
||||
self.nameLabel.setGeometry(0, 0, width, 34)
|
||||
self.nameLabel.setGeometry(5, 0, width - 5, 34)
|
||||
self.nameLabel.setText(text)
|
||||
|
|
|
@ -33,6 +33,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||
self._history_loader = history_loader
|
||||
self._calls_manager = calls_manager
|
||||
self._groups_service = groups_service
|
||||
self._contacts_manager.active_contact_changed.add_callback(self._new_contact_selected)
|
||||
self.messageEdit.set_messenger(messenger)
|
||||
|
||||
def show(self):
|
||||
|
@ -284,6 +285,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||
pixmap = QtGui.QPixmap(util.join_path(util.get_images_directory(), 'menu.png'))
|
||||
icon = QtGui.QIcon(pixmap)
|
||||
self.groupMenuButton.setIcon(icon)
|
||||
self.groupMenuButton.setIconSize(QtCore.QSize(45, 60))
|
||||
self.update_call_state('call')
|
||||
self.typing = QtWidgets.QLabel(Form)
|
||||
self.typing.setGeometry(QtCore.QRect(500, 25, 50, 30))
|
||||
|
@ -331,6 +333,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||
self.peers_list.setSpacing(1)
|
||||
self.peers_list.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAsNeeded)
|
||||
self.peers_list.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
|
||||
self.peers_list.verticalScrollBar().setContextMenuPolicy(QtCore.Qt.NoContextMenu)
|
||||
self.peers_list.setSelectionMode(QtWidgets.QAbstractItemView.NoSelection)
|
||||
|
||||
def initUI(self):
|
||||
self.setMinimumSize(920, 500)
|
||||
|
@ -431,6 +435,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||
self.account_name.setGeometry(QtCore.QRect(100, 15, self.width() - 560, 25))
|
||||
self.account_status.setGeometry(QtCore.QRect(100, 35, self.width() - 560, 25))
|
||||
self.messageEdit.setFocus()
|
||||
self._contacts_manager.update()
|
||||
|
||||
def keyPressEvent(self, event):
|
||||
key, modifiers = event.key(), event.modifiers()
|
||||
|
@ -564,7 +569,7 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||
|
||||
def send_smiley(self):
|
||||
self.menu.hide()
|
||||
if self._contacts_manager.active_friend + 1:
|
||||
if self._contacts_manager.get_curr_contact() is not None:
|
||||
self.smiley = self._widget_factory.create_smiley_window(self)
|
||||
self.smiley.setGeometry(QtCore.QRect(self.x() if self._settings['mirror_mode'] else 270 + self.x(),
|
||||
self.y() + self.height() - 200,
|
||||
|
@ -687,11 +692,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||
|
||||
def friend_click(self, index):
|
||||
num = index.row()
|
||||
self._contacts_manager.set_active(num)
|
||||
self._contacts_manager.active_contact = num
|
||||
self.groupMenuButton.setVisible(not self._contacts_manager.is_active_a_friend())
|
||||
if self._should_show_group_peers_list:
|
||||
self._toggle_gc_peers_list()
|
||||
self.resizeEvent()
|
||||
|
||||
def mouseReleaseEvent(self, event):
|
||||
pos = self.connection_status.pos()
|
||||
|
@ -711,14 +713,21 @@ class MainWindow(QtWidgets.QMainWindow):
|
|||
return
|
||||
if self._contacts_manager.get_curr_friend() is None:
|
||||
return
|
||||
self.search_field = SearchScreen(self.messages, self.messages.width(), self.messages.parent())
|
||||
self.search_field = self._widget_factory.create_search_screen(self.messages)
|
||||
x, y = self.messages.x(), self.messages.y() + self.messages.height() - 40
|
||||
self.search_field.setGeometry(x, y, self.messages.width(), 40)
|
||||
self.messages.setGeometry(x, self.messages.y(), self.messages.width(), self.messages.height() - 40)
|
||||
if self._should_show_group_peers_list:
|
||||
self.peers_list.setFixedHeight(self.peers_list.height() - 40)
|
||||
self.search_field.show()
|
||||
|
||||
def _toggle_gc_peers_list(self):
|
||||
self._should_show_group_peers_list = not self._should_show_group_peers_list
|
||||
self.resizeEvent()
|
||||
if self._should_show_group_peers_list:
|
||||
self._groups_service.generate_peers_list()
|
||||
|
||||
def _new_contact_selected(self, contact):
|
||||
if self._should_show_group_peers_list:
|
||||
self._toggle_gc_peers_list()
|
||||
self.resizeEvent()
|
||||
|
|
|
@ -374,8 +374,10 @@ class ClickableLabel(QtWidgets.QLabel):
|
|||
|
||||
class SearchScreen(QtWidgets.QWidget):
|
||||
|
||||
def __init__(self, messages, width, *args):
|
||||
def __init__(self, contacts_manager, history_loader, messages, width, *args):
|
||||
super().__init__(*args)
|
||||
self._contacts_manager = contacts_manager
|
||||
self._history_loader = history_loader
|
||||
self.setMaximumSize(width, 40)
|
||||
self.setMinimumSize(width, 40)
|
||||
self._messages = messages
|
||||
|
@ -426,24 +428,24 @@ class SearchScreen(QtWidgets.QWidget):
|
|||
self.search_text.setFocus()
|
||||
|
||||
def search(self):
|
||||
Profile.get_instance().update()
|
||||
self._contacts_manager.update()
|
||||
text = self.search_text.text()
|
||||
friend = Profile.get_instance().get_curr_friend()
|
||||
if text and friend and util.is_re_valid(text):
|
||||
index = friend.search_string(text)
|
||||
contact = self._contacts_manager.get_curr_contact()
|
||||
if text and contact and util.is_re_valid(text):
|
||||
index = contact.search_string(text)
|
||||
self.load_messages(index)
|
||||
|
||||
def prev(self):
|
||||
friend = Profile.get_instance().get_curr_friend()
|
||||
if friend is not None:
|
||||
index = friend.search_prev()
|
||||
contact = self._contacts_manager.get_curr_contact()
|
||||
if contact is not None:
|
||||
index = contact.search_prev()
|
||||
self.load_messages(index)
|
||||
|
||||
def next(self):
|
||||
friend = Profile.get_instance().get_curr_friend()
|
||||
contact = self._contacts_manager.get_curr_contact()
|
||||
text = self.search_text.text()
|
||||
if friend is not None:
|
||||
index = friend.search_next()
|
||||
if contact is not None:
|
||||
index = contact.search_next()
|
||||
if index is not None:
|
||||
count = self._messages.count()
|
||||
index += count
|
||||
|
@ -456,10 +458,9 @@ class SearchScreen(QtWidgets.QWidget):
|
|||
def load_messages(self, index):
|
||||
text = self.search_text.text()
|
||||
if index is not None:
|
||||
profile = Profile.get_instance()
|
||||
count = self._messages.count()
|
||||
while count + index < 0:
|
||||
profile.load_history()
|
||||
self._history_loader.load_history()
|
||||
count = self._messages.count()
|
||||
index += count
|
||||
item = self._messages.item(index)
|
||||
|
|
|
@ -281,7 +281,7 @@ class NetworkSettings(CenteredWidget):
|
|||
def __init__(self, settings, reset):
|
||||
super().__init__()
|
||||
self._settings = settings
|
||||
self.reset = reset
|
||||
self._reset = reset
|
||||
self.initUI()
|
||||
self.center()
|
||||
|
||||
|
@ -360,7 +360,7 @@ class NetworkSettings(CenteredWidget):
|
|||
self._settings['download_nodes_list'] = self.nodes.isChecked()
|
||||
self._settings.save()
|
||||
# recreate tox instance
|
||||
self._profile.reset()
|
||||
self._reset()
|
||||
self.close()
|
||||
except Exception as ex:
|
||||
log('Exception in restart: ' + str(ex))
|
||||
|
|
|
@ -6,7 +6,7 @@ from ui.groups_widgets import *
|
|||
class WidgetsFactory:
|
||||
|
||||
def __init__(self, settings, profile, profile_manager, contacts_manager, file_transfer_handler, smiley_loader,
|
||||
plugin_loader, toxes, version, groups_service):
|
||||
plugin_loader, toxes, version, groups_service, history):
|
||||
self._settings = settings
|
||||
self._profile = profile
|
||||
self._profile_manager = profile_manager
|
||||
|
@ -17,6 +17,7 @@ class WidgetsFactory:
|
|||
self._toxes = toxes
|
||||
self._version = version
|
||||
self._groups_service = groups_service
|
||||
self._history = history
|
||||
|
||||
def create_screenshot_window(self, *args):
|
||||
return ScreenShotWindow(self._file_transfer_handler, self._contacts_manager, *args)
|
||||
|
@ -31,7 +32,7 @@ class WidgetsFactory:
|
|||
return ProfileSettings(self._profile, self._profile_manager, self._settings, self._toxes)
|
||||
|
||||
def create_network_settings_window(self):
|
||||
return NetworkSettings(self._settings, self._profile.reset)
|
||||
return NetworkSettings(self._settings, self._profile.restart)
|
||||
|
||||
def create_audio_settings_window(self):
|
||||
return AudioSettings(self._settings)
|
||||
|
@ -71,3 +72,6 @@ class WidgetsFactory:
|
|||
|
||||
def create_join_group_screen_window(self):
|
||||
return JoinGroupScreen(self._groups_service)
|
||||
|
||||
def create_search_screen(self, messages):
|
||||
return SearchScreen(self._contacts_manager, self._history, messages, messages.parent())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue