diff options
Diffstat (limited to 'libmediaoverridesqt/override.cpp')
-rw-r--r-- | libmediaoverridesqt/override.cpp | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/libmediaoverridesqt/override.cpp b/libmediaoverridesqt/override.cpp new file mode 100644 index 0000000..71102df --- /dev/null +++ b/libmediaoverridesqt/override.cpp @@ -0,0 +1,63 @@ +#include "override.h" + +#define MANAGER_PATH "/org/maemo/Playback/Manager" +#define MANAGER_SERVICE "org.maemo.Playback.Manager" +#define MANAGER_INTERFACE "org.maemo.Playback.Manager" + +using namespace ResourcePolicy; + +Override * ResourcePolicy::createMute(QObject *parent) +{ + return new Override("Mute", parent); +} + +Override * ResourcePolicy::createPrivacyOverride(QObject *parent) +{ + return new Override("PrivacyOverride", parent); +} + +Override * ResourcePolicy::createBluetoothOVerride(QObject *parent) +{ + return new Override("BluetoothOverride", parent); +} + +Override::Override(QString overrideType, QObject *parent): + QObject(parent), dBusConnection(QDBusConnection::sessionBus()), type(overrideType) +{ + dBusConnection.connect(MANAGER_SERVICE, MANAGER_PATH, MANAGER_INTERFACE, + type, this, SLOT(handleChange(bool))); +} + +Override::~Override() +{ +} + +void Override::fetchState() +{ + QDBusMessage msg; + QString method = "Get" + type; + + msg = QDBusMessage::createMethodCall(MANAGER_SERVICE, MANAGER_PATH, + MANAGER_INTERFACE, method); + dBusConnection.send(msg); +} + +void Override::request(bool newState) +{ + QDBusMessage msg; + QString method = "Request" + type; + + msg = QDBusMessage::createMethodCall(MANAGER_SERVICE, MANAGER_PATH, + MANAGER_INTERFACE, method); + + QVariantList args; + args.append(newState); + msg.setArguments(args); + dBusConnection.send(msg); +} + +void Override::handleChange(bool newState) +{ + emit changed(newState); +} + |