Bind the slider volume to the 4a active role
[apps/homescreen.git] / homescreen / src / mastervolume.h
1 /*
2  * Copyright (C) 2017 Konsulko Group
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 #include <QtCore/QObject>
18 #include <QQmlEngine>
19 #include "../helpers/qafbwebsocketclient.h"
20
21 class MasterVolume
22         : public QObject
23 {
24         Q_OBJECT
25         Q_PROPERTY (uint32_t volume READ getVolume WRITE setVolume NOTIFY VolumeChanged)
26
27 private:
28         QAfbWebsocketClient m_client;
29         QUrl m_url;
30         qint32 m_volume;
31
32 public:
33         MasterVolume(QObject* parent = nullptr);
34         ~MasterVolume() = default;
35
36         Q_INVOKABLE void open(const QUrl& url);
37         Q_INVOKABLE qint32 getVolume() const;
38         Q_INVOKABLE void setVolume(qint32 val);
39
40 private slots:
41         void onClientConnected();
42         void onClientDisconnected();
43         void onClientError(QAbstractSocket::SocketError se);
44         void onClientEventReceived(QString name, const QJsonValue& data);
45         void TryOpen();
46
47 signals:
48         void VolumeChanged();
49 };