diff options
-rw-r--r-- | homescreen/src/mastervolume.cpp | 48 | ||||
-rw-r--r-- | package/config.xml | 3 |
2 files changed, 30 insertions, 21 deletions
diff --git a/homescreen/src/mastervolume.cpp b/homescreen/src/mastervolume.cpp index 35b47fc..5a6dc9a 100644 --- a/homescreen/src/mastervolume.cpp +++ b/homescreen/src/mastervolume.cpp @@ -46,20 +46,30 @@ void MasterVolume::setVolume(qint32 volume) { m_volume = volume; QJsonObject arg; - arg.insert("action", "volume"); + arg.insert("control", "Master"); arg.insert("value", volume); - m_client.call("ahl-4a", "activerole", arg, [](bool, const QJsonValue&) { - // Nothing to do, events will update sliders - }); + m_client.call("audiomixer", "volume", arg); } } void MasterVolume::onClientConnected() { - // Subscribe to 4a events - m_client.call("ahl-4a", "subscribe", QJsonValue(), [this](bool r, const QJsonValue&) { - if (r) qDebug() << "MasterVolume::onClientConnected - subscribed to 4a events!"; - else qCritical () << "MasterVolume::onClientConnected - Failed to subscribe to 4a events!"; + QJsonObject arg; + arg.insert("control", "Master"); + m_client.call("audiomixer", "volume", arg, [this](bool r, const QJsonValue& v) { + if (r && v.isObject()) { + int volume = v.toObject()["response"].toObject()["volume"].toDouble() * 100; + volume = qBound(0, volume, 100); + if (m_volume != volume) + { + m_volume = volume; + emit VolumeChanged(); + } + } + + QJsonObject arg; + arg.insert("event", "volume_changed"); + m_client.call("audiomixer", "subscribe", arg); }); } @@ -77,19 +87,19 @@ void MasterVolume::onClientError(QAbstractSocket::SocketError se) void MasterVolume::onClientEventReceived(QString name, const QJsonValue& data) { qDebug() << "MasterVolume::onClientEventReceived[" << name << "]: " << data; - if (name == "ahl-4a/volume_changed") + if (name == "audiomixer/volume_changed") { - QJsonObject arg = data.toObject(); - bool active = arg["active"].toBool(); - if (active) + QString ctlName = data.toObject()["control"].toString(); + + if (ctlName != "Master") + return; + + int volume = data.toObject()["value"].toDouble() * 100; + volume = qBound(0, volume, 100); + if (m_volume != volume) { - // QString role = arg["role"].toString(); - int volume = arg["volume"].toInt(); - if (m_volume != volume) - { - m_volume = volume; - emit VolumeChanged(); - } + m_volume = volume; + emit VolumeChanged(); } } } diff --git a/package/config.xml b/package/config.xml index a14b1f3..3ebe39b 100644 --- a/package/config.xml +++ b/package/config.xml @@ -12,13 +12,12 @@ <param name="weather" value="ws" /> <param name="Bluetooth-Manager" value="ws" /> <param name="windowmanager" value="ws" /> - <param name="ahl-4a" value="ws" /> + <param name="audiomixer" value="ws" /> </feature> <feature name="urn:AGL:widget:required-permission"> <param name="urn:AGL:permission::public:no-htdocs" value="required" /> <param name="urn:AGL:permission::system:run-by-default" value="required" /> <param name="http://tizen.org/privilege/internal/dbus" value="required" /> - <param name="urn:AGL:permission::public:4a-audio-mixer" value="required" /> <param name="urn:AGL:permission::public:display" value="required" /> </feature> </widget> |