diff --git a/src/callbacks.py b/src/callbacks.py index c4eded7..4930e6a 100644 --- a/src/callbacks.py +++ b/src/callbacks.py @@ -83,9 +83,8 @@ def friend_name(window): return wrapped -def friend_status_message(window): +def friend_status_message(): """ - :param window: main window :return: function for callback friend_status_message. It updates friend's status message and calls window repaint """ @@ -113,6 +112,8 @@ def friend_message(window): friend = profile.get_friend_by_number(friend_number) if settings['notifications']: invoke_in_main_thread(tray_notification, friend.name, message.decode('utf8')) + if settings['sound_notifications']: + sound_notification(SOUND_NOTIFICATION['MESSAGE']) return wrapped @@ -136,5 +137,5 @@ def init_callbacks(tox, window): tox.callback_self_connection_status(self_connection_status(tox), 0) tox.callback_friend_connection_status(friend_connection_status, 0) tox.callback_friend_name(friend_name(window), 0) - tox.callback_friend_status_message(friend_status_message(window), 0) + tox.callback_friend_status_message(friend_status_message(), 0) tox.callback_friend_request(friend_request, 0) diff --git a/src/menu.py b/src/menu.py index 7c670b8..130a168 100644 --- a/src/menu.py +++ b/src/menu.py @@ -295,8 +295,8 @@ class NotificationsSettings(CenteredWidget): def retranslateUi(self): self.setWindowTitle(QtGui.QApplication.translate("notificationsForm", "Notification settings", None, QtGui.QApplication.UnicodeUTF8)) self.enableNotifications.setText(QtGui.QApplication.translate("notificationsForm", "Enable notifications", None, QtGui.QApplication.UnicodeUTF8)) - self.soundNotifications.setText(QtGui.QApplication.translate("notificationsForm", "Enable call\'s sound", None, QtGui.QApplication.UnicodeUTF8)) - self.callsSound.setText(QtGui.QApplication.translate("notificationsForm", "Enable sound notifications", None, QtGui.QApplication.UnicodeUTF8)) + self.callsSound.setText(QtGui.QApplication.translate("notificationsForm", "Enable call\'s sound", None, QtGui.QApplication.UnicodeUTF8)) + self.soundNotifications.setText(QtGui.QApplication.translate("notificationsForm", "Enable sound notifications", None, QtGui.QApplication.UnicodeUTF8)) def closeEvent(self, *args, **kwargs): settings = Settings.get_instance() diff --git a/src/notifications.py b/src/notifications.py index af29fed..b6e9ee4 100644 --- a/src/notifications.py +++ b/src/notifications.py @@ -1,9 +1,16 @@ from PySide import QtGui +from PySide.phonon import Phonon from util import curr_directory -# TODO: add sound notifications # TODO: make app icon active +SOUND_NOTIFICATION = { + 'MESSAGE': 0, + 'FRIEND_CONNECTION_STATUS': 1, + 'FILE_TRANSFER': 2 +} + + def tray_notification(title, text): if QtGui.QSystemTrayIcon.isSystemTrayAvailable(): tray = QtGui.QSystemTrayIcon(QtGui.QIcon(curr_directory() + '/images/icon.png')) @@ -12,3 +19,14 @@ def tray_notification(title, text): if len(text) > 30: text = text[:27] + '...' tray.showMessage(title, text, QtGui.QSystemTrayIcon.NoIcon, 3000) + + +def sound_notification(t): + # TODO: add other sound notifications + if t == SOUND_NOTIFICATION['MESSAGE']: + f = curr_directory() + '/sounds/message.wav' + else: + return + m = Phonon.MediaSource(f) + player = Phonon.createPlayer(Phonon.MusicCategory, m) + player.play()