notifications + callbacks update

This commit is contained in:
ingvar1995 2016-02-24 23:01:25 +03:00
parent 35cf74eff8
commit 632412c345
2 changed files with 23 additions and 12 deletions

View file

@ -1,5 +1,6 @@
from PySide import QtCore
from notifications import *
from settings import Settings
# TODO: add all callbacks (replace test callbacks and use wrappers)
@ -26,14 +27,15 @@ def invoke_in_main_thread(fn, *args, **kwargs):
QtCore.QCoreApplication.postEvent(_invoker, InvokeEvent(fn, *args, **kwargs))
def repaint_widget(widget):
return widget.repaint
def self_connection_status(st, tox_link):
"""
:param st: widget on mainscreen which shows status
:param tox_link: tox instance
:return: function for tox.callback_self_connection_status
"""
def wrapped(tox, connection, user_data):
print 'Connection status: ', str(connection)
invoke_in_main_thread(repaint_widget(st))
invoke_in_main_thread(st.repaint)
return wrapped
@ -41,17 +43,23 @@ def friend_status(a, b, c, d):
print "Friend connected! Friend's data: ", str(a), str(b), str(c)
def friend_message(a, b, c, d, e, f):
print 'Message: ', d.decode('utf8')
tray_notification('Message', d.decode('utf8'))
def friend_message(window):
"""
:param window: main window
:return: function for tox.callback_friend_message
"""
def wrapped(tox, friend_number, message_type, message, size, user_data):
print 'Message: ', message.decode('utf8')
if not window.isActiveWindow() and Settings()['notifications']:
tray_notification('Message', message.decode('utf8'))
return wrapped
def init_callbacks(tox, window):
"""
:param tox: tox instance
:param window: main window
:return: None
"""
tox.callback_friend_status(friend_status, 0)
tox.callback_friend_message(friend_message, 0)
tox.callback_friend_message(friend_message(window), 0)
tox.callback_self_connection_status(self_connection_status(window.connection_status, tox), 0)

View file

@ -1,5 +1,6 @@
from PySide import QtGui, QtCore
from PySide import QtGui
# TODO: add sound notifications
# TODO: add reaction om mouse move
def tray_notification(title, text):
@ -7,4 +8,6 @@ def tray_notification(title, text):
tray = QtGui.QSystemTrayIcon()
tray.setContextMenu(QtGui.QMenu())
tray.show()
tray.showMessage(title, text)
if len(text) > 50:
text = text[:50] + '...'
tray.showMessage(title, text, QtGui.QSystemTrayIcon.NoIcon, 4000)