summaryrefslogtreecommitdiff
path: root/libmediaoverridesqt/override.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libmediaoverridesqt/override.cpp')
-rw-r--r--libmediaoverridesqt/override.cpp63
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);
+}
+