If phonon backend is not available use as fallback the system bell
authorSebastien Fricker <fricker@froglogic.com>
Thu, 4 Oct 2012 11:19:26 +0000 (13:19 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Tue, 19 Feb 2013 21:18:14 +0000 (22:18 +0100)
src/qtui/phononnotificationbackend.cpp
src/qtui/phononnotificationbackend.h

index db2450e..821507c 100644 (file)
@@ -33,6 +33,7 @@ PhononNotificationBackend::PhononNotificationBackend(QObject *parent)
     : AbstractNotificationBackend(parent),
     _media(0)
 {
     : 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());
     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 &notification)
 {
 
 void PhononNotificationBackend::notify(const Notification &notification)
 {
-    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);
     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"));
     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()
 {
 
 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.open->setEnabled( false );
         ui.filename->setEnabled( false );
+        ui.filename->setText( QString() );
     }
     else
     {
     }
     else
     {
@@ -192,12 +196,16 @@ void PhononNotificationBackend::ConfigWidget::on_open_clicked()
 
 void PhononNotificationBackend::ConfigWidget::on_play_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();
 }
 }
index 1489dc2..b6ae1be 100644 (file)
@@ -49,6 +49,7 @@ private:
     class ConfigWidget;
 
     bool _enabled;
     class ConfigWidget;
 
     bool _enabled;
+    bool _audioAvailable;
     Phonon::MediaObject *_media;
 };
 
     Phonon::MediaObject *_media;
 };
 
@@ -75,6 +76,7 @@ private:
     Ui::PhononNotificationConfigWidget ui;
 
     bool enabled;
     Ui::PhononNotificationConfigWidget ui;
 
     bool enabled;
+    bool _audioAvailable;
     QString filename;
     Phonon::MediaObject *audioPreview;
 };
     QString filename;
     Phonon::MediaObject *audioPreview;
 };