Settings for autopausing
[someplayer] / src / dbusadaptor.cpp
index 945ced5..8286441 100644 (file)
@@ -26,6 +26,7 @@
 #include <QtCore/QStringList>
 #include <QtCore/QVariant>
 #include <QDebug>
+#include "config.h"
 
 /*
  * Implementation of adaptor class DBusAdaptop
@@ -108,8 +109,31 @@ void DBusAdaptop::processBTSignal(QString event, QString state) {
                                prev();
                        } else if (state == "play-cd" || state == "pause-cd") {
                                toggle();
+                       } else if (state == "connection") {
+                               SomePlayer::Storage::Config config;
+                               if (config.getValue("playback/hpautopause").toString() != "yes") {
+                                       return;
+                               }
+                               bool present = QDBusInterface ("org.freedesktop.Hal",
+                                                              "/org/freedesktop/Hal/devices/platform_headphone",
+                                                              "org.freedesktop.Hal.Device",
+                                                              QDBusConnection::systemBus()).call ("GetProperty", "button.state.value").arguments().at(0).toBool();
+                               if (!present) {
+                                       pause();
+                               } else {
+                                       QTimer::singleShot(1000, this, SLOT(playIfPaused()));
+                               }
+
                        }
                }
        }
        _time = t;
 }
+
+void DBusAdaptop::pause() {
+       QMetaObject::invokeMethod(parent(), "pause");
+}
+
+void DBusAdaptop::playIfPaused() {
+       QMetaObject::invokeMethod(parent(), "playIfPaused");
+}