X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=homescreen%2Fsrc%2Fmastervolume.cpp;h=de8d75d14195fea651a5a6e694a4e06382dd73b1;hb=8fb557550d4d3a7b799134af672f499531cc407e;hp=35b47fcc9801e87386805a1c2694bfd5d64ccba7;hpb=3229c695fc52e22e773cef89a835915c0bb6d90b;p=apps%2Fhomescreen.git diff --git a/homescreen/src/mastervolume.cpp b/homescreen/src/mastervolume.cpp index 35b47fc..de8d75d 100644 --- a/homescreen/src/mastervolume.cpp +++ b/homescreen/src/mastervolume.cpp @@ -15,25 +15,28 @@ */ #include "mastervolume.h" -#include #include #include +#define MASTER_CONTROL "Master Playback" + MasterVolume::MasterVolume(QObject* parent) : QObject(parent) , m_volume{50} { +#if 0 connect(&m_client, SIGNAL(connected()), this, SLOT(onClientConnected())); connect(&m_client, SIGNAL(disconnected()), this, SLOT(onClientDisconnected())); connect(&m_client, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(onClientError(QAbstractSocket::SocketError))); connect(&m_client, SIGNAL(eventReceived(QString, const QJsonValue&)), this, SLOT(onClientEventReceived(QString, const QJsonValue&))); +#endif } +#if 0 void MasterVolume::open(const QUrl& url) { - m_url = url; - TryOpen(); } +#endif qint32 MasterVolume::getVolume() const { @@ -45,21 +48,37 @@ void MasterVolume::setVolume(qint32 volume) if (m_volume != volume) { m_volume = volume; +#if 0 QJsonObject arg; - arg.insert("action", "volume"); - arg.insert("value", volume); - m_client.call("ahl-4a", "activerole", arg, [](bool, const QJsonValue&) { - // Nothing to do, events will update sliders - }); + arg.insert("control", MASTER_CONTROL); + double v = (double) volume / 100.0; + arg.insert("value", v); + m_client.call("audiomixer", "volume", arg); +#endif } } +#if 0 + 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_CONTROL); + 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,24 +96,21 @@ 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_CONTROL) + 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(); } } } -void MasterVolume::TryOpen() -{ - m_client.open(m_url); -} +#endif