Processing BT audio disconnecting
authorNikolay Tischenko <niktischenko@gmail.com>
Thu, 31 Mar 2011 17:44:38 +0000 (00:44 +0700)
committerNikolay Tischenko <niktischenko@gmail.com>
Thu, 31 Mar 2011 17:44:38 +0000 (00:44 +0700)
src/dbusadaptor.cpp
src/dbusadaptor.h

index 83c1d5a..a6264f0 100644 (file)
@@ -43,6 +43,9 @@ DBusAdaptop::DBusAdaptop(QObject *parent)
                                                  "org.freedesktop.Hal.Device", "Condition", this, SLOT(processBTSignal(QString, QString)))) {
                qWarning() << "Can not connect to HAL";
        }
+       if (!QDBusConnection::systemBus().connect(QString(), QString(), "org.bluez.AudioSink", "PropertyChanged", this, SLOT(processBTConnect(QString, QDBusVariant)))) {
+               qWarning() << "Can not connect to HAL 2";
+       }
        setAutoRelaySignals(true);
 }
 
@@ -154,3 +157,17 @@ void DBusAdaptop::pause() {
 void DBusAdaptop::playIfPaused() {
        QMetaObject::invokeMethod(parent(), "playIfPaused");
 }
+
+void DBusAdaptop::processBTConnect(QString stateName, QDBusVariant state) {
+       SomePlayer::Storage::Config config;
+       if (config.getValue("hw/hpautopause").toString() != "yes") {
+               return;
+       }
+       if (stateName == "State") {
+               if (state.variant().toString() == "disconnected") {
+                       pause();
+               } else if (state.variant().toString() == "connected") {
+                       QTimer::singleShot(1000, this, SLOT(playIfPaused()));
+               }
+       }
+}
index 9d84d89..5e0caca 100644 (file)
@@ -23,6 +23,7 @@
 #include <QtCore/QObject>
 #include <QtDBus/QtDBus>
 #include <QTime>
+#include <QVariant>
 
 #define _DBUS_ACTION_TIMEOUT_ (500)
 
@@ -94,6 +95,7 @@ public Q_SLOTS: // METHODS
        Q_NOREPLY void playIfPaused();
 
        void processBTSignal(QString, QString);
+       void processBTConnect(QString, QDBusVariant);
 Q_SIGNALS: // SIGNALS
        void stateChanged();
        void albumArt(QString path);