unsent files fixes - part 1
This commit is contained in:
parent
6495aa9920
commit
206c5c4905
4 changed files with 36 additions and 29 deletions
|
@ -16,7 +16,7 @@ class FileTransfersMessagesService:
|
||||||
status = FILE_TRANSFER_STATE['RUNNING'] if accepted else FILE_TRANSFER_STATE['INCOMING_NOT_STARTED']
|
status = FILE_TRANSFER_STATE['RUNNING'] if accepted else FILE_TRANSFER_STATE['INCOMING_NOT_STARTED']
|
||||||
tm = TransferMessage(author, util.get_unix_time(), status, size, file_name, friend.number, file_number)
|
tm = TransferMessage(author, util.get_unix_time(), status, size, file_name, friend.number, file_number)
|
||||||
|
|
||||||
if self._is_active(friend.number):
|
if self._is_friend_active(friend.number):
|
||||||
self._create_file_transfer_item(tm)
|
self._create_file_transfer_item(tm)
|
||||||
self._messages.scrollToBottom()
|
self._messages.scrollToBottom()
|
||||||
else:
|
else:
|
||||||
|
@ -31,7 +31,7 @@ class FileTransfersMessagesService:
|
||||||
status = FILE_TRANSFER_STATE['OUTGOING_NOT_STARTED']
|
status = FILE_TRANSFER_STATE['OUTGOING_NOT_STARTED']
|
||||||
tm = TransferMessage(author, util.get_unix_time(), status, size, file_name, friend.number, file_number)
|
tm = TransferMessage(author, util.get_unix_time(), status, size, file_name, friend.number, file_number)
|
||||||
|
|
||||||
if self._is_active(friend.number):
|
if self._is_friend_active(friend.number):
|
||||||
self._create_file_transfer_item(tm)
|
self._create_file_transfer_item(tm)
|
||||||
self._messages.scrollToBottom()
|
self._messages.scrollToBottom()
|
||||||
|
|
||||||
|
@ -40,16 +40,18 @@ class FileTransfersMessagesService:
|
||||||
return tm
|
return tm
|
||||||
|
|
||||||
def add_inline_message(self, transfer, index):
|
def add_inline_message(self, transfer, index):
|
||||||
if self._is_active(transfer.friend_number):
|
if self._is_friend_active(transfer.friend_number):
|
||||||
count = self._messages.count()
|
count = self._messages.count()
|
||||||
if count + index + 1 >= 0:
|
if count + index + 1 >= 0:
|
||||||
self._create_inline_item(transfer.data, count + index + 1)
|
self._create_inline_item(transfer.data, count + index + 1)
|
||||||
|
|
||||||
def add_unsent_file_message(self, friend, file_path, data):
|
def add_unsent_file_message(self, friend, file_path, data):
|
||||||
tm = UnsentFileMessage(file_path, data, util.get_unix_time())
|
author = MessageAuthor(self._profile.name, MESSAGE_AUTHOR['ME'])
|
||||||
|
size = os.path.getsize(file_path) if data is None else len(data)
|
||||||
|
tm = UnsentFileMessage(file_path, data, util.get_unix_time(), author, size, friend.number)
|
||||||
friend.append_message(tm)
|
friend.append_message(tm)
|
||||||
|
|
||||||
if self._is_active(friend.number):
|
if self._is_friend_active(friend.number):
|
||||||
self._create_unsent_file_item(tm)
|
self._create_unsent_file_item(tm)
|
||||||
self._messages.scrollToBottom()
|
self._messages.scrollToBottom()
|
||||||
|
|
||||||
|
@ -59,7 +61,7 @@ class FileTransfersMessagesService:
|
||||||
# Private methods
|
# Private methods
|
||||||
# -----------------------------------------------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
def _is_active(self, friend_number):
|
def _is_friend_active(self, friend_number):
|
||||||
if not self._contacts_manager.is_active_a_friend():
|
if not self._contacts_manager.is_active_a_friend():
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from history.database import MESSAGE_AUTHOR
|
from history.database import MESSAGE_AUTHOR
|
||||||
|
import os.path
|
||||||
from ui.messages_widgets import *
|
from ui.messages_widgets import *
|
||||||
|
|
||||||
|
|
||||||
|
@ -16,8 +17,18 @@ PAGE_SIZE = 42
|
||||||
class MessageAuthor:
|
class MessageAuthor:
|
||||||
|
|
||||||
def __init__(self, author_name, author_type):
|
def __init__(self, author_name, author_type):
|
||||||
self.name = author_name
|
self._name = author_name
|
||||||
self.type = author_type
|
self._type = author_type
|
||||||
|
|
||||||
|
def get_name(self):
|
||||||
|
return self._name
|
||||||
|
|
||||||
|
name = property(get_name)
|
||||||
|
|
||||||
|
def get_type(self):
|
||||||
|
return self._type
|
||||||
|
|
||||||
|
type = property(get_type)
|
||||||
|
|
||||||
|
|
||||||
class Message:
|
class Message:
|
||||||
|
@ -139,7 +150,10 @@ class TransferMessage(Message):
|
||||||
self._friend_number, self._file_number = friend_number, file_number
|
self._friend_number, self._file_number = friend_number, file_number
|
||||||
|
|
||||||
def is_active(self, file_number):
|
def is_active(self, file_number):
|
||||||
return self._file_number == file_number and self._state not in (2, 3)
|
if self._file_number != file_number:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return self._state not in (FILE_TRANSFER_STATE['FINISHED'], FILE_TRANSFER_STATE['CANCELLED'])
|
||||||
|
|
||||||
def get_friend_number(self):
|
def get_friend_number(self):
|
||||||
return self._friend_number
|
return self._friend_number
|
||||||
|
@ -178,10 +192,11 @@ class TransferMessage(Message):
|
||||||
return FileTransferItem(self, *args)
|
return FileTransferItem(self, *args)
|
||||||
|
|
||||||
|
|
||||||
class UnsentFileMessage(Message):
|
class UnsentFileMessage(TransferMessage):
|
||||||
|
|
||||||
def __init__(self, path, data, time):
|
def __init__(self, path, data, time, author, size, friend_number):
|
||||||
super().__init__(MESSAGE_TYPE['FILE_TRANSFER'], 0, time)
|
file_name = os.path.basename(path)
|
||||||
|
super().__init__(author, time, FILE_TRANSFER_STATE['UNSENT'], size, file_name, friend_number, -1)
|
||||||
self._data, self._path = data, path
|
self._data, self._path = data, path
|
||||||
|
|
||||||
def get_data(self):
|
def get_data(self):
|
||||||
|
@ -189,11 +204,6 @@ class UnsentFileMessage(Message):
|
||||||
|
|
||||||
data = property(get_data)
|
data = property(get_data)
|
||||||
|
|
||||||
def get_state(self):
|
|
||||||
return FILE_TRANSFER_STATE['UNSENT']
|
|
||||||
|
|
||||||
state = property(get_state)
|
|
||||||
|
|
||||||
def get_path(self):
|
def get_path(self):
|
||||||
return self._path
|
return self._path
|
||||||
|
|
||||||
|
|
|
@ -316,8 +316,8 @@ class MainWindow(QtWidgets.QMainWindow):
|
||||||
|
|
||||||
def load(pos):
|
def load(pos):
|
||||||
if not pos:
|
if not pos:
|
||||||
friend = self._contacts_manager.get_curr_friend()
|
contact = self._contacts_manager.get_curr_contact()
|
||||||
self._history_loader.load_history(friend)
|
self._history_loader.load_history(contact)
|
||||||
self.messages.verticalScrollBar().setValue(1)
|
self.messages.verticalScrollBar().setValue(1)
|
||||||
self.messages.verticalScrollBar().valueChanged.connect(load)
|
self.messages.verticalScrollBar().valueChanged.connect(load)
|
||||||
self.messages.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
|
self.messages.setVerticalScrollMode(QtWidgets.QAbstractItemView.ScrollPerPixel)
|
||||||
|
|
|
@ -253,7 +253,8 @@ class FileTransferItem(QtWidgets.QListWidget):
|
||||||
icon = QtGui.QIcon(pixmap)
|
icon = QtGui.QIcon(pixmap)
|
||||||
self.cancel.setIcon(icon)
|
self.cancel.setIcon(icon)
|
||||||
self.cancel.setIconSize(QtCore.QSize(30, 30))
|
self.cancel.setIconSize(QtCore.QSize(30, 30))
|
||||||
self.cancel.setVisible(transfer_message.state in ACTIVE_FILE_TRANSFERS)
|
self.cancel.setVisible(transfer_message.state in ACTIVE_FILE_TRANSFERS or
|
||||||
|
transfer_message.state == FILE_TRANSFER_STATE['UNSENT'])
|
||||||
self.cancel.clicked.connect(
|
self.cancel.clicked.connect(
|
||||||
lambda: self.cancel_transfer(transfer_message.friend_number, transfer_message.file_number))
|
lambda: self.cancel_transfer(transfer_message.friend_number, transfer_message.file_number))
|
||||||
self.cancel.setStyleSheet('QPushButton:hover { border: 1px solid #3A3939; background-color: none;}')
|
self.cancel.setStyleSheet('QPushButton:hover { border: 1px solid #3A3939; background-color: none;}')
|
||||||
|
@ -268,6 +269,9 @@ class FileTransferItem(QtWidgets.QListWidget):
|
||||||
elif transfer_message.state == FILE_TRANSFER_STATE['PAUSED_BY_USER']: # setup for continue
|
elif transfer_message.state == FILE_TRANSFER_STATE['PAUSED_BY_USER']: # setup for continue
|
||||||
self.accept_or_pause.setVisible(True)
|
self.accept_or_pause.setVisible(True)
|
||||||
self.button_update('resume')
|
self.button_update('resume')
|
||||||
|
elif transfer_message.state == FILE_TRANSFER_STATE['UNSENT']:
|
||||||
|
self.accept_or_pause.setVisible(False)
|
||||||
|
self.setStyleSheet('QListWidget { border: 1px solid #FF8000; }')
|
||||||
else: # pause
|
else: # pause
|
||||||
self.accept_or_pause.setVisible(True)
|
self.accept_or_pause.setVisible(True)
|
||||||
self.button_update('pause')
|
self.button_update('pause')
|
||||||
|
@ -382,17 +386,12 @@ class FileTransferItem(QtWidgets.QListWidget):
|
||||||
self.state = state
|
self.state = state
|
||||||
self.time_left.setVisible(True)
|
self.time_left.setVisible(True)
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def mark_as_sent():
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
class UnsentFileItem(FileTransferItem):
|
class UnsentFileItem(FileTransferItem):
|
||||||
|
|
||||||
def __init__(self, transfer_message, file_transfer_handler, settings, width, parent=None):
|
def __init__(self, transfer_message, file_transfer_handler, settings, width, parent=None):
|
||||||
super().__init__(transfer_message, file_transfer_handler, settings, width, parent)
|
super().__init__(transfer_message, file_transfer_handler, settings, width, parent)
|
||||||
self._time = time
|
self._time = time
|
||||||
self.pb.setVisible(False)
|
|
||||||
movie = QtGui.QMovie(util.join_path(util.get_images_directory(), 'spinner.gif'))
|
movie = QtGui.QMovie(util.join_path(util.get_images_directory(), 'spinner.gif'))
|
||||||
self.time.setMovie(movie)
|
self.time.setMovie(movie)
|
||||||
movie.start()
|
movie.start()
|
||||||
|
@ -448,7 +447,3 @@ class InlineImageItem(QtWidgets.QScrollArea):
|
||||||
if directory:
|
if directory:
|
||||||
fl = QtCore.QFile(directory + '/toxygen_inline_' + util.curr_time().replace(':', '_') + '.png')
|
fl = QtCore.QFile(directory + '/toxygen_inline_' + util.curr_time().replace(':', '_') + '.png')
|
||||||
self._pixmap.save(fl, 'PNG')
|
self._pixmap.save(fl, 'PNG')
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def mark_as_sent():
|
|
||||||
return False
|
|
||||||
|
|
Loading…
Reference in a new issue