From: Sebastien Fricker Date: Thu, 4 Oct 2012 11:19:26 +0000 (+0200) Subject: If phonon backend is not available use as fallback the system bell X-Git-Tag: 0.9-beta1~26 X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=commitdiff_plain;h=3e34b3310896abbef743a1edfcdcc3e46745b830 If phonon backend is not available use as fallback the system bell --- diff --git a/src/qtui/phononnotificationbackend.cpp b/src/qtui/phononnotificationbackend.cpp index db2450ea..821507ce 100644 --- a/src/qtui/phononnotificationbackend.cpp +++ b/src/qtui/phononnotificationbackend.cpp @@ -33,6 +33,7 @@ PhononNotificationBackend::PhononNotificationBackend(QObject *parent) : AbstractNotificationBackend(parent), _media(0) { + _audioAvailable = ! Phonon::BackendCapabilities::availableAudioOutputDevices().isEmpty() ; NotificationSettings notificationSettings; _enabled = notificationSettings.value("Phonon/Enabled", true).toBool(); createMediaObject(notificationSettings.value("Phonon/AudioFile", QString()).toString()); @@ -51,9 +52,13 @@ PhononNotificationBackend::~PhononNotificationBackend() void PhononNotificationBackend::notify(const Notification ¬ification) { - if (_enabled && _media && (notification.type == Highlight || notification.type == PrivMsg)) { - _media->stop(); - _media->play(); + if (_enabled && (notification.type == Highlight || notification.type == PrivMsg)) { + if (_audioAvailable) { + _media->stop(); + _media->play(); + } + else + QApplication::beep(); } } @@ -104,6 +109,7 @@ PhononNotificationBackend::ConfigWidget::ConfigWidget(QWidget *parent) audioPreview(0) { ui.setupUi(this); + _audioAvailable = ! Phonon::BackendCapabilities::availableAudioOutputDevices().isEmpty() ; ui.enabled->setIcon(SmallIcon("media-playback-start")); ui.play->setIcon(SmallIcon("media-playback-start")); ui.open->setIcon(SmallIcon("document-open")); @@ -122,14 +128,12 @@ PhononNotificationBackend::ConfigWidget::~ConfigWidget() void PhononNotificationBackend::ConfigWidget::widgetChanged() { - bool audioAvailable = ! Phonon::BackendCapabilities::availableAudioOutputDevices().isEmpty(); - if ( ! audioAvailable ) + if ( ! _audioAvailable ) { - ui.enabled->setChecked( false ); - ui.enabled->setEnabled( false ); - ui.play->setEnabled( false ); + ui.play->setEnabled( ui.enabled->isChecked() ); ui.open->setEnabled( false ); ui.filename->setEnabled( false ); + ui.filename->setText( QString() ); } else { @@ -192,12 +196,16 @@ void PhononNotificationBackend::ConfigWidget::on_open_clicked() void PhononNotificationBackend::ConfigWidget::on_play_clicked() { - if (!ui.filename->text().isEmpty()) { - if (audioPreview) - delete audioPreview; + if (_audioAvailable) { + if (!ui.filename->text().isEmpty()) { + if (audioPreview) + delete audioPreview; - audioPreview = Phonon::createPlayer(Phonon::NotificationCategory, - Phonon::MediaSource(ui.filename->text())); - audioPreview->play(); + audioPreview = Phonon::createPlayer(Phonon::NotificationCategory, + Phonon::MediaSource(ui.filename->text())); + audioPreview->play(); + } } + else + QApplication::beep(); } diff --git a/src/qtui/phononnotificationbackend.h b/src/qtui/phononnotificationbackend.h index 1489dc2c..b6ae1bea 100644 --- a/src/qtui/phononnotificationbackend.h +++ b/src/qtui/phononnotificationbackend.h @@ -49,6 +49,7 @@ private: class ConfigWidget; bool _enabled; + bool _audioAvailable; Phonon::MediaObject *_media; }; @@ -75,6 +76,7 @@ private: Ui::PhononNotificationConfigWidget ui; bool enabled; + bool _audioAvailable; QString filename; Phonon::MediaObject *audioPreview; };