initial fixes for file transfers - messages, widgets
This commit is contained in:
parent
7209dfae72
commit
bfd2a92dde
11 changed files with 245 additions and 230 deletions
58
toxygen/file_transfers/file_transfers_messages_service.py
Normal file
58
toxygen/file_transfers/file_transfers_messages_service.py
Normal file
|
|
@ -0,0 +1,58 @@
|
|||
from messenger.messenger import *
|
||||
import utils.util as util
|
||||
from file_transfers.file_transfers import *
|
||||
|
||||
|
||||
class FileTransfersMessagesService:
|
||||
|
||||
def __init__(self, contacts_manager, messages_items_factory, profile, main_screen):
|
||||
self._contacts_manager = contacts_manager
|
||||
self._messages_items_factory = messages_items_factory
|
||||
self._profile = profile
|
||||
self._messages = main_screen.messages
|
||||
|
||||
def add_incoming_transfer_message(self, friend, accepted, size, file_name, file_number):
|
||||
author = MessageAuthor(friend.name, MESSAGE_AUTHOR['FRIEND'])
|
||||
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)
|
||||
|
||||
if self._is_active(friend.number):
|
||||
self._create_file_transfer_item(tm)
|
||||
self._messages.scrollToBottom()
|
||||
else:
|
||||
friend.actions = True
|
||||
|
||||
friend.append_message(tm)
|
||||
|
||||
def add_outgoing_transfer_message(self, friend, size, file_name, file_number):
|
||||
author = MessageAuthor(self._profile.name, MESSAGE_AUTHOR['ME'])
|
||||
status = FILE_TRANSFER_STATE['OUTGOING_NOT_STARTED']
|
||||
tm = TransferMessage(author, util.get_unix_time(), status, size, file_name, friend.number, file_number)
|
||||
|
||||
if self._is_active(friend.number):
|
||||
self._create_file_transfer_item(tm)
|
||||
self._messages.scrollToBottom()
|
||||
|
||||
friend.append_message(tm)
|
||||
|
||||
def add_inline_message(self, transfer, index):
|
||||
if self._is_active(transfer.friend_number):
|
||||
count = self._messages.count()
|
||||
if count + index + 1 >= 0:
|
||||
self._create_inline_item(transfer.data, count + index + 1)
|
||||
|
||||
# -----------------------------------------------------------------------------------------------------------------
|
||||
# Private methods
|
||||
# -----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
def _is_active(self, friend_number):
|
||||
if not self._contacts_manager.is_active_a_friend():
|
||||
return False
|
||||
|
||||
return friend_number == self._contacts_manager.get_active_number()
|
||||
|
||||
def _create_file_transfer_item(self, tm):
|
||||
return self._messages_items_factory.create_file_transfer_item(tm)
|
||||
|
||||
def _create_inline_item(self, data, position):
|
||||
return self._messages_items_factory.create_inline_item(data, False, position)
|
||||
Loading…
Add table
Add a link
Reference in a new issue