audiocallmanager.h 1,8 КБ
Newer Older
A. Roditelev's avatar
A. Roditelev включено в состав коммита
1
2
3
4
5
/**
 * SPDX-FileCopyrightText: 2024 Open Mobile Platform LLC <community@omp.ru>
 * SPDX-License-Identifier: BSD-3-Clause
 */

Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
6
7
8
9
10
11
#pragma once

#include <QObject>
#include <QQuickItem>
#include <QVariantMap>

Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
12
#include <audiocontext.h>
Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
13
14
#include <callmanager.h>

Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
15
16
#include "audiomanager.h"

Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
17
18
19
20
21
22
23
24
25
26
27
28
using ru::auroraos::call::AudioContext;
using ru::auroraos::call::Call;
using ru::auroraos::call::CallManager;

class AudioCall;

class AudioCallManager : public CallManager
{
    Q_OBJECT

    Q_PROPERTY(bool holdable READ holdable WRITE setHoldable NOTIFY holdableChanged)
    Q_PROPERTY(bool redialable READ redialable WRITE setRedialable NOTIFY redialableChanged)
Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
29
    Q_PROPERTY(AudioManager* audioManager READ audioManager CONSTANT)
A. Roditelev's avatar
A. Roditelev включено в состав коммита
30
    Q_PROPERTY(QString audioGeneratorConfigPath READ audioGeneratorConfigPath CONSTANT)
Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
31
32
33
34
35
36
37
38

public:
    explicit AudioCallManager(const QString &accountId, QObject *parent = nullptr);
    ~AudioCallManager() = default;

    Q_INVOKABLE AudioCall *getAudioCall(const QString &callId) const;
    Q_INVOKABLE Call *initiateCall(const QVariantMap &properties);
    Q_INVOKABLE Call *reportIncomingCall(const QVariantMap &properties);
A. Roditelev's avatar
A. Roditelev включено в состав коммита
39
    Q_INVOKABLE void disconnectAll();
Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
40
41
42
43
44
45
46

    bool holdable() const;
    void setHoldable(bool on);

    bool redialable() const;
    void setRedialable(bool on);

Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
47
48
49
50
51
    AudioManager *audioManager()
    {
        return &m_audioManager;
    }

A. Roditelev's avatar
A. Roditelev включено в состав коммита
52
53
    QString audioGeneratorConfigPath() const;

Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
54
55
56
57
58
59
60
61
62
63
64
public slots:
    void openUri(const QString &uri);

signals:
    void holdableChanged(bool on);
    void redialableChanged(bool on);

private:
    Call *newCall(QVariantMap &properties);

private:
Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
65
    AudioContext m_audioContext;
Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
66
    AudioManager m_audioManager;
Denis Grigorev's avatar
Denis Grigorev включено в состав коммита
67
68
69
70
71
72
    unsigned int m_callId;
    bool m_holdable;
    bool m_redialable;
};

QML_DECLARE_TYPE(AudioCallManager)