From: Nikolay Tischenko Date: Thu, 31 Mar 2011 17:44:38 +0000 (+0700) Subject: Processing BT audio disconnecting X-Git-Url: https://vcs.maemo.org/git/?p=someplayer;a=commitdiff_plain;h=eab547de858860e0c7b8eb1e1c5aab646cdc503e Processing BT audio disconnecting --- diff --git a/src/dbusadaptor.cpp b/src/dbusadaptor.cpp index 83c1d5a..a6264f0 100644 --- a/src/dbusadaptor.cpp +++ b/src/dbusadaptor.cpp @@ -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())); + } + } +} diff --git a/src/dbusadaptor.h b/src/dbusadaptor.h index 9d84d89..5e0caca 100644 --- a/src/dbusadaptor.h +++ b/src/dbusadaptor.h @@ -23,6 +23,7 @@ #include #include #include +#include #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);