summaryrefslogtreecommitdiff
path: root/saltoqd/voicecallmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'saltoqd/voicecallmanager.cpp')
-rw-r--r--saltoqd/voicecallmanager.cpp73
1 files changed, 73 insertions, 0 deletions
diff --git a/saltoqd/voicecallmanager.cpp b/saltoqd/voicecallmanager.cpp
new file mode 100644
index 0000000..3ef9223
--- /dev/null
+++ b/saltoqd/voicecallmanager.cpp
@@ -0,0 +1,73 @@
+#include <QtDBus/QDBusConnection>
+#include "voicecallmanager.h"
+#include "voicecallmanager_interface.h"
+
+static OrgNemomobileVoicecallVoiceCallManagerInterface *vcm = NULL;
+
+VoiceCallManager::VoiceCallManager(ToqManager *toq) :
+ QObject(toq), _toq(toq)
+{
+ if (!vcm) {
+ vcm = new OrgNemomobileVoicecallVoiceCallManagerInterface("org.nemomobile.voicecall",
+ "/",
+ QDBusConnection::sessionBus());
+ }
+
+ _toq->setEndpointListener(ToqConnection::VoiceCallEndpoint, this);
+}
+
+void VoiceCallManager::handleMessage(const ToqConnection::Message &msg)
+{
+ Q_ASSERT(msg.destination == ToqConnection::VoiceCallEndpoint);
+ switch (msg.type) {
+ case 15:
+ handleGetPhoneStatusMessage(msg);
+ break;
+ default:
+ qWarning() << "Unknown message" << msg.type;
+ break;
+ }
+}
+
+void VoiceCallManager::setSilentMode(bool silent)
+{
+ setProfile(silent ? "silent" : "ambience");
+}
+
+void VoiceCallManager::handleGetPhoneStatusMessage(const ToqConnection::Message &msg)
+{
+ QJsonObject obj;
+ obj.insert("service", int(1));
+ obj.insert("call_status", int(0));
+ obj.insert("call_setup_status", int(0));
+ obj.insert("silence_mode", getCurrentProfile() == "silent" ? 1 : 0);
+
+ _toq->sendReply(msg, 0x400F, obj);
+}
+
+QString VoiceCallManager::getCurrentProfile()
+{
+ QDBusConnection bus = QDBusConnection::sessionBus();
+ QDBusReply<QString> resp = bus.call(QDBusMessage::createMethodCall("com.nokia.profiled",
+ "/com/nokia/profiled",
+ "com.nokia.profiled",
+ "get_profile"));
+ if (resp.isValid()) {
+ return resp.value();
+ } else {
+ qWarning() << resp.error().message();
+ return QString();
+ }
+}
+
+void VoiceCallManager::setProfile(const QString &name)
+{
+ QDBusConnection bus = QDBusConnection::sessionBus();
+ QDBusReply<bool> resp = bus.call(QDBusMessage::createMethodCall("com.nokia.profiled",
+ "/com/nokia/profiled",
+ "com.nokia.profiled",
+ "set_profile") << name);
+ if (!resp.isValid()) {
+ qWarning() << resp.error().message();
+ }
+}