diff options
| author | Tomasz Sterna <tomek@xiaoka.com> | 2014-07-21 00:11:39 +0200 |
|---|---|---|
| committer | Tomasz Sterna <tomek@xiaoka.com> | 2014-07-21 00:11:39 +0200 |
| commit | 2441492fa9e64f1782395f64015194b486c67808 (patch) | |
| tree | 394e8e07bd9111d335d06b2f45dc522e7e5b6f71 | |
| parent | 4f708105d87b1b2dcb516b05dd2ab1c7da508a8a (diff) | |
Implemented SilentWhenConnected
| -rw-r--r-- | daemon/manager.cpp | 52 | ||||
| -rw-r--r-- | daemon/manager.h | 4 |
2 files changed, 56 insertions, 0 deletions
diff --git a/daemon/manager.cpp b/daemon/manager.cpp index 3214cdc..e97da41 100644 --- a/daemon/manager.cpp +++ b/daemon/manager.cpp @@ -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", @@ -61,6 +65,7 @@ Manager::Manager(watch::WatchConnector *watch, DBusConnector *dbus, VoiceCallMan void Manager::onSettingChanged(const QString &key) { logger()->debug() << __FUNCTION__ << key << ":" << settings->property(qPrintable(key)); + if (key == "silentWhenConnected") applyProfile(); } void Manager::onSettingsChanged() @@ -269,3 +274,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(); + } + } +} diff --git a/daemon/manager.h b/daemon/manager.h index 64dbcce..89b8e2b 100644 --- a/daemon/manager.h +++ b/daemon/manager.h @@ -47,6 +47,8 @@ class Manager : QContactDetailFilter numberFilter; GroupManager *conversations; + QString defaultProfile; + QString lastSeenMpris; public: @@ -54,6 +56,7 @@ public: Q_INVOKABLE QString findPersonByNumber(QString number); Q_INVOKABLE void processUnreadMessages(GroupObject *group); + Q_INVOKABLE QString getCurrentProfile(); Q_INVOKABLE QString mpris(); QVariantMap mprisMetadata; QVariantMap getMprisMetadata() { return mprisMetadata; } @@ -63,6 +66,7 @@ signals: public slots: void hangupAll(); + void applyProfile(); protected slots: void onSettingChanged(const QString &key); |
