Bind the slider volume to the 4a active role
[apps/homescreen.git] / homescreen / src / mastervolume.h
index bca6356..e23e8d1 100644 (file)
 
 #include <QtCore/QObject>
 #include <QQmlEngine>
+#include "../helpers/qafbwebsocketclient.h"
 
-class MasterVolume : public QObject
+class MasterVolume
+       : public QObject
 {
        Q_OBJECT
-               Q_PROPERTY (uint32_t volume READ getVolume WRITE setVolume NOTIFY volumeChanged)
-
-       public:
-               MasterVolume(QObject *parent = 0)
-                       : QObject(parent), m_volume(32768)
-               {
-               }
-
-               ~MasterVolume() {}
-
-               uint32_t getVolume() const { return m_volume; }
-               void setVolume(int volume);
-
-       public slots:
-               void changeExternalVolume(int volume);
-
-       signals:
-               void volumeChanged(void);
-               void sliderVolumeChanged(int volume_delta);
-               void externalVolumeChanged(uint32_t volume);
-
-       private:
-               uint32_t m_volume;
+       Q_PROPERTY (uint32_t volume READ getVolume WRITE setVolume NOTIFY VolumeChanged)
+
+private:
+       QAfbWebsocketClient m_client;
+       QUrl m_url;
+       qint32 m_volume;
+
+public:
+       MasterVolume(QObject* parent = nullptr);
+       ~MasterVolume() = default;
+
+       Q_INVOKABLE void open(const QUrl& url);
+       Q_INVOKABLE qint32 getVolume() const;
+       Q_INVOKABLE void setVolume(qint32 val);
+
+private slots:
+       void onClientConnected();
+       void onClientDisconnected();
+       void onClientError(QAbstractSocket::SocketError se);
+       void onClientEventReceived(QString name, const QJsonValue& data);
+       void TryOpen();
+
+signals:
+       void VolumeChanged();
 };