summaryrefslogtreecommitdiff
path: root/daemon/manager.cpp
diff options
context:
space:
mode:
authorPhilipp Andreas <github@smurfy.de>2014-07-22 19:17:53 +0200
committerPhilipp Andreas <github@smurfy.de>2014-07-22 19:49:07 +0200
commitc2c141ed1e13e6f0fbc740d0ff37caba0b2a7c08 (patch)
treea7892e105c85c7d4a32d3b3202e60ec2131e42c8 /daemon/manager.cpp
parentc9c1ed9faee07c0067827872ffe465d465c81470 (diff)
parent9f8db04d6059e0b220e36a064d694a1b0649f5f0 (diff)
Merge branch 'master' into notifications
Conflicts: daemon/daemon.cpp daemon/manager.cpp daemon/manager.h
Diffstat (limited to 'daemon/manager.cpp')
-rw-r--r--daemon/manager.cpp53
1 files changed, 52 insertions, 1 deletions
diff --git a/daemon/manager.cpp b/daemon/manager.cpp
index efa5a28..41617e4 100644
--- a/daemon/manager.cpp
+++ b/daemon/manager.cpp
@@ -11,7 +11,7 @@ Manager::Manager(watch::WatchConnector *watch, DBusConnector *dbus, VoiceCallMan
{
connect(settings, SIGNAL(valueChanged(QString)), SLOT(onSettingChanged(const QString&)));
connect(settings, SIGNAL(valuesChanged()), SLOT(onSettingsChanged()));
- connect(settings, SIGNAL(silentWhenConnectedChanged()), SLOT(onSettingsChanged()));
+ //connect(settings, SIGNAL(silentWhenConnectedChanged(bool)), SLOT(onSilentWhenConnectedChanged(bool)));
// We don't need to handle presence changes, so report them separately and ignore them
QMap<QString, QString> parameters;
@@ -50,6 +50,10 @@ Manager::Manager(watch::WatchConnector *watch, DBusConnector *dbus, VoiceCallMan
connect(dbus, SIGNAL(pebbleChanged()), adaptor, SIGNAL(pebbleChanged()));
connect(watch, SIGNAL(connectedChanged()), adaptor, SIGNAL(connectedChanged()));
+ QString currentProfile = getCurrentProfile();
+ defaultProfile = currentProfile.isEmpty() ? "ambience" : currentProfile;
+ connect(watch, SIGNAL(connectedChanged()), SLOT(applyProfile()));
+
// Music Control interface
session.connect("", "/org/mpris/MediaPlayer2",
"org.freedesktop.DBus.Properties", "PropertiesChanged",
@@ -257,3 +261,50 @@ void Manager::setMprisMetadata(QVariantMap metadata)
mprisMetadata = metadata;
emit mprisMetadataChanged(mprisMetadata);
}
+
+QString Manager::getCurrentProfile()
+{
+ QDBusReply<QString> profile = QDBusConnection::sessionBus().call(
+ QDBusMessage::createMethodCall("com.nokia.profiled", "/com/nokia/profiled", "com.nokia.profiled", "get_profile"));
+ if (profile.isValid()) {
+ QString currentProfile = profile.value();
+ logger()->debug() << "Got profile" << currentProfile;
+ return currentProfile;
+ }
+
+ logger()->error() << profile.error().message();
+ return QString();
+}
+
+void Manager::applyProfile()
+{
+ QString currentProfile = getCurrentProfile();
+ QString newProfile;
+
+ if (settings->property("silentWhenConnected").toBool()) {
+ if (watch->isConnected() && currentProfile != "silent") {
+ newProfile = "silent";
+ defaultProfile = currentProfile;
+ }
+ if (!watch->isConnected() && currentProfile == "silent" && defaultProfile != "silent") {
+ newProfile = defaultProfile;
+ }
+ }
+ else if (currentProfile != defaultProfile) {
+ newProfile = defaultProfile;
+ }
+
+ if (!newProfile.isEmpty()) {
+ QDBusReply<bool> res = QDBusConnection::sessionBus().call(
+ QDBusMessage::createMethodCall("com.nokia.profiled", "/com/nokia/profiled", "com.nokia.profiled", "set_profile")
+ << newProfile);
+ if (res.isValid()) {
+ if (!res.value()) {
+ logger()->error() << "Unable to set profile" << newProfile;
+ }
+ }
+ else {
+ logger()->error() << res.error().message();
+ }
+ }
+}