#include <QtCore/QString>
#include <QtCore/QStringList>
#include <QtCore/QVariant>
+#include <QDebug>
/*
* Implementation of adaptor class DBusAdaptop
{
// constructor
setAutoRelaySignals(true);
+ // handling signals from bluetooth headset
+ _time = QTime::currentTime();
+ if (!QDBusConnection::systemBus().connect(QString(), QString(),
+ "org.freedesktop.Hal.Device", "Condition", this, SLOT(processBTSignal(QString, QString)))) {
+ qWarning() << "Can not connect to HAL";
+ }
}
DBusAdaptop::~DBusAdaptop()
QMetaObject::invokeMethod(parent(), "toggle");
}
+void DBusAdaptop::processBTSignal(QString event, QString state) {
+ QTime t = QTime::currentTime();
+ long msec = _time.msecsTo(t);
+ if (msec > _DBUS_ACTION_TIMEOUT_) {
+ if (event == "ButtonPressed") {
+ if (state == "next-song") {
+ QMetaObject::invokeMethod(parent(), "next");
+ } else if (state == "previous-song") {
+ QMetaObject::invokeMethod(parent(), "prev");
+ } else if (state == "play-cd" || state == "pause-cd") {
+ QMetaObject::invokeMethod(parent(), "toggle");
+ }
+ }
+ }
+ _time = t;
+}
+
#include <QtCore/QObject>
#include <QtDBus/QtDBus>
+#include <QTime>
+
+#define _DBUS_ACTION_TIMEOUT_ (500)
+
class QByteArray;
template<class T> class QList;
template<class Key, class Value> class QMap;
Q_NOREPLY void stop();
QString title();
Q_NOREPLY void toggle();
+
+ void processBTSignal(QString, QString);
Q_SIGNALS: // SIGNALS
+private:
+ QTime _time;
};
#endif