toxygen/toxygen/notifications.py

76 lines
2.1 KiB
Python
Raw Normal View History

2016-05-24 18:22:21 +00:00
try:
from PySide import QtCore, QtGui
except ImportError:
from PyQt4 import QtCore, QtGui
2016-02-25 08:32:40 +00:00
from util import curr_directory
2016-04-10 12:27:35 +00:00
import wave
import pyaudio
2016-02-24 18:38:36 +00:00
SOUND_NOTIFICATION = {
'MESSAGE': 0,
'FRIEND_CONNECTION_STATUS': 1,
'FILE_TRANSFER': 2
}
2016-04-01 16:13:01 +00:00
def tray_notification(title, text, tray, window):
"""
2016-04-02 18:31:59 +00:00
Show tray notification and activate window icon
NOTE: different behaviour on different OS
2016-04-01 16:13:01 +00:00
:param title: Name of user who sent message or file
:param text: text of message or file info
:param tray: ref to tray icon
:param window: main window
"""
2016-02-24 18:38:36 +00:00
if QtGui.QSystemTrayIcon.isSystemTrayAvailable():
2016-02-25 08:32:40 +00:00
if len(text) > 30:
2016-02-25 20:40:00 +00:00
text = text[:27] + '...'
2016-02-25 08:32:40 +00:00
tray.showMessage(title, text, QtGui.QSystemTrayIcon.NoIcon, 3000)
2016-04-02 18:31:59 +00:00
QtGui.QApplication.alert(window, 0)
2016-04-01 16:13:01 +00:00
def message_clicked():
window.setWindowState(window.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive)
window.activateWindow()
tray.connect(tray, QtCore.SIGNAL("messageClicked()"), message_clicked)
2016-06-22 11:35:22 +00:00
class AudioFile:
2016-04-10 12:27:35 +00:00
chunk = 1024
def __init__(self, fl):
self.wf = wave.open(fl, 'rb')
self.p = pyaudio.PyAudio()
self.stream = self.p.open(
format=self.p.get_format_from_width(self.wf.getsampwidth()),
channels=self.wf.getnchannels(),
rate=self.wf.getframerate(),
output=True
)
def play(self):
data = self.wf.readframes(self.chunk)
while data:
self.stream.write(data)
data = self.wf.readframes(self.chunk)
def close(self):
self.stream.close()
self.p.terminate()
def sound_notification(t):
2016-04-02 18:31:59 +00:00
"""
Plays sound notification
:param t: type of notification
"""
if t == SOUND_NOTIFICATION['MESSAGE']:
f = curr_directory() + '/sounds/message.wav'
2016-03-18 13:50:32 +00:00
elif t == SOUND_NOTIFICATION['FILE_TRANSFER']:
f = curr_directory() + '/sounds/file.wav'
else:
f = curr_directory() + '/sounds/contact.wav'
2016-04-10 12:27:35 +00:00
a = AudioFile(f)
a.play()
a.close()