summaryrefslogtreecommitdiffstats
path: root/src/PulseAudioQt/card.h
blob: 2618ac7ec4d81272126193c5d988f3be106a1ee8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
/*
    SPDX-FileCopyrightText: 2014-2015 Harald Sitter <sitter@kde.org>

    SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/

#ifndef CARD_H
#define CARD_H

#include "cardport.h"
#include "indexedpulseobject.h"
#include "profile.h"
#include "sink.h"
#include "source.h"

struct pa_card_info;

namespace PulseAudioQt
{
class CardPort;
class Profile;

class PULSEAUDIOQT_EXPORT Card : public IndexedPulseObject
{
    Q_OBJECT
    Q_PROPERTY(QList<Profile *> profiles READ profiles NOTIFY profilesChanged)
    Q_PROPERTY(quint32 activeProfileIndex READ activeProfileIndex WRITE setActiveProfileIndex NOTIFY activeProfileIndexChanged)
    Q_PROPERTY(QList<CardPort *> ports READ ports NOTIFY portsChanged)
    Q_PROPERTY(QList<Sink *> sinks READ sinks NOTIFY sinksChanged)
    Q_PROPERTY(QList<Source *> sources READ sources NOTIFY sourcesChanged)

public:
    ~Card();

    QString description() const;
    QList<Profile *> profiles() const;
    quint32 activeProfileIndex() const;
    void setActiveProfileIndex(quint32 profileIndex);
    QList<CardPort *> ports() const;
    QList<Sink *> sinks() const;
    QList<Source *> sources() const;

Q_SIGNALS:
    void profilesChanged();
    void activeProfileIndexChanged();
    void portsChanged();
    void sinksChanged();
    void sourcesChanged();

private:
    explicit Card(QObject *parent);

    class CardPrivate *const d;
    friend class MapBase<Card, pa_card_info>;
};

} // PulseAudioQt

#endif // CARD_H