2 * Copyright (C) 2016 The Qt Company Ltd.
3 * Copyright (C) 2016,2017 Konsulko Group
4 * Copyright (C) 2018 IoT.bzh
6 * Licensed under the Apache License, Version 2.0 (the "License");
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
22 #include <QSharedPointer>
25 #include "qafbwebsocketclient.h"
26 #include "audiorole.hpp"
32 Q_PROPERTY(QList<QObject*> roles READ roles NOTIFY rolesChanged)
36 QList<QObject*> m_roles;
37 QAfbWebsocketClient m_client;
40 explicit Mixer(QObject* parent = nullptr);
41 Mixer(const Mixer&) = delete;
43 Q_INVOKABLE void open(const QUrl& url);
44 Q_INVOKABLE QList<QObject*> roles() const;
45 Q_INVOKABLE void setRoleVolume(AudioRole* role);
49 void volumeChanged(const QString& name, int value);
52 void parseControls(const QJsonValue & v);
53 void onClientConnected();
54 void onClientDisconnected();
55 void onClientError(QAbstractSocket::SocketError se);
56 void onClientEventReceived(QString eventName, const QJsonValue& data);
58 void onRoleValueChanged();