bug fixes

This commit is contained in:
ingvar1995 2016-03-15 22:12:37 +03:00
parent c90822bf57
commit ab419eddda
5 changed files with 22 additions and 23 deletions

View file

@ -89,9 +89,10 @@ def friend_status_message(tox, friend_num, status_message, size, user_data):
invoke_in_main_thread(profile.set_active) invoke_in_main_thread(profile.set_active)
def friend_message(window): def friend_message(window, tray):
""" """
:param window: main window :param window: main window
:param tray: tray
:return: function for tox.callback_friend_message. Adds new message to list :return: function for tox.callback_friend_message. Adds new message to list
""" """
def wrapped(tox, friend_number, message_type, message, size, user_data): def wrapped(tox, friend_number, message_type, message, size, user_data):
@ -102,7 +103,7 @@ def friend_message(window):
if not window.isActiveWindow(): if not window.isActiveWindow():
friend = profile.get_friend_by_number(friend_number) friend = profile.get_friend_by_number(friend_number)
if settings['notifications']: if settings['notifications']:
invoke_in_main_thread(tray_notification, friend.name, message.decode('utf8')) invoke_in_main_thread(tray_notification, friend.name, message.decode('utf8'), tray)
if settings['sound_notifications']: if settings['sound_notifications']:
sound_notification(SOUND_NOTIFICATION['MESSAGE']) sound_notification(SOUND_NOTIFICATION['MESSAGE'])
return wrapped return wrapped
@ -117,14 +118,14 @@ def friend_request(tox, public_key, message, message_size, user_data):
invoke_in_main_thread(profile.process_friend_request, tox_id, message.decode('utf-8')) invoke_in_main_thread(profile.process_friend_request, tox_id, message.decode('utf-8'))
def init_callbacks(tox, window): def init_callbacks(tox, window, tray):
""" """
Initialization of all callbacks. Initialization of all callbacks.
:param tox: tox instance :param tox: tox instance
:param window: main window :param window: main window
""" """
tox.callback_friend_status(friend_status, 0) tox.callback_friend_status(friend_status, 0)
tox.callback_friend_message(friend_message(window), 0) tox.callback_friend_message(friend_message(window, tray), 0)
tox.callback_self_connection_status(self_connection_status(tox), 0) tox.callback_self_connection_status(self_connection_status(tox), 0)
tox.callback_friend_connection_status(friend_connection_status, 0) tox.callback_friend_connection_status(friend_connection_status, 0)
tox.callback_friend_name(friend_name, 0) tox.callback_friend_name(friend_name, 0)

View file

@ -55,12 +55,17 @@ class Toxygen(object):
data = ProfileHelper.open_profile(path, name) data = ProfileHelper.open_profile(path, name)
self.tox = tox_factory(data, settings) self.tox = tox_factory(data, settings)
# tray icon
self.tray = QtGui.QSystemTrayIcon(QtGui.QIcon(curr_directory() + '/images/icon.png'))
self.tray.setContextMenu(QtGui.QMenu())
self.tray.show()
self.ms = MainWindow(self.tox, self.reset) self.ms = MainWindow(self.tox, self.reset)
self.ms.show() self.ms.show()
QtGui.QApplication.setStyle(get_style(settings['theme'])) # set application style QtGui.QApplication.setStyle(get_style(settings['theme'])) # set application style
# init thread # init thread
self.init = self.InitThread(self.tox, self.ms) self.init = self.InitThread(self.tox, self.ms, self.tray)
self.init.start() self.init.start()
# starting thread for tox iterate # starting thread for tox iterate
@ -83,14 +88,12 @@ class Toxygen(object):
self.mainloop.wait() self.mainloop.wait()
self.init.terminate() self.init.terminate()
data = self.tox.get_savedata() data = self.tox.get_savedata()
length = self.tox.get_savedata_size() ProfileHelper.save_profile(data)
savedata = ''.join('{}'.format(data[i]) for i in xrange(length))
ProfileHelper.save_profile(savedata)
del self.tox del self.tox
# create new tox instance # create new tox instance
self.tox = tox_factory(savedata, Settings.get_instance()) self.tox = tox_factory(data, Settings.get_instance())
# init thread # init thread
self.init = self.InitThread(self.tox, self.ms) self.init = self.InitThread(self.tox, self.ms, self.tray)
self.init.start() self.init.start()
# starting thread for tox iterate # starting thread for tox iterate
@ -104,13 +107,13 @@ class Toxygen(object):
class InitThread(QtCore.QThread): class InitThread(QtCore.QThread):
def __init__(self, tox, ms): def __init__(self, tox, ms, tray):
QtCore.QThread.__init__(self) QtCore.QThread.__init__(self)
self.tox, self.ms = tox, ms self.tox, self.ms, self.tray = tox, ms, tray
def run(self): def run(self):
# initializing callbacks # initializing callbacks
init_callbacks(self.tox, self.ms) init_callbacks(self.tox, self.ms, self.tray)
# bootstrap # bootstrap
for data in node_generator(): for data in node_generator():
self.tox.bootstrap(*data) self.tox.bootstrap(*data)

View file

@ -11,11 +11,8 @@ SOUND_NOTIFICATION = {
} }
def tray_notification(title, text): def tray_notification(title, text, tray):
if QtGui.QSystemTrayIcon.isSystemTrayAvailable(): if QtGui.QSystemTrayIcon.isSystemTrayAvailable():
tray = QtGui.QSystemTrayIcon(QtGui.QIcon(curr_directory() + '/images/icon.png'))
tray.setContextMenu(QtGui.QMenu())
tray.show()
if len(text) > 30: if len(text) > 30:
text = text[:27] + '...' text = text[:27] + '...'
tray.showMessage(title, text, QtGui.QSystemTrayIcon.NoIcon, 3000) tray.showMessage(title, text, QtGui.QSystemTrayIcon.NoIcon, 3000)

View file

@ -428,10 +428,10 @@ class Profile(Contact, Singleton):
active_friend = property(get_active, set_active) active_friend = property(get_active, set_active)
def get_active_number(self): def get_active_number(self):
return self._friends[self._active_friend].number return self._friends[self._active_friend].number if self._active_friend + 1 else -1
def get_active_name(self): def get_active_name(self):
return self._friends[self._active_friend].name return self._friends[self._active_friend].name if self._active_friend + 1 else ''
def is_active_online(self): def is_active_online(self):
return self._active_friend + 1 and self._friends[self._active_friend].status is not None return self._active_friend + 1 and self._friends[self._active_friend].status is not None
@ -451,7 +451,7 @@ class Profile(Contact, Singleton):
user_name = Profile.get_instance().get_active_name() user_name = Profile.get_instance().get_active_name()
self.create_message_item(message.decode('utf-8'), curr_time(), user_name, message_type) self.create_message_item(message.decode('utf-8'), curr_time(), user_name, message_type)
self._messages.scrollToBottom() self._messages.scrollToBottom()
self._friends[self._active_friend].append_message((message, self._friends[self._active_friend].append_message((message.decode('utf-8'),
MESSAGE_OWNER['FRIEND'], MESSAGE_OWNER['FRIEND'],
time.time(), time.time(),
message_type)) message_type))

View file

@ -56,10 +56,8 @@ class TestTox():
tox.self_set_name(name) tox.self_set_name(name)
tox.self_set_status_message(status_message) tox.self_set_status_message(status_message)
data = tox.get_savedata() data = tox.get_savedata()
length = tox.get_savedata_size()
savedata = ''.join('{}'.format(data[i]) for i in xrange(length))
del tox del tox
tox = tox_factory(savedata) tox = tox_factory(data)
assert tox.self_get_name() == name assert tox.self_get_name() == name
assert tox.self_get_status_message() == status_message assert tox.self_get_status_message() == status_message