File indexing completed on 2024-10-06 07:22:33

0001 /*
0002     SPDX-FileCopyrightText: 2014-2015 Harald Sitter <sitter@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #ifndef PULSEOBJECT_H
0008 #define PULSEOBJECT_H
0009 
0010 #include <QObject>
0011 
0012 #include "pulseaudioqt_export.h"
0013 
0014 namespace PulseAudioQt
0015 {
0016 class Context;
0017 
0018 template<typename Type, typename PAInfo>
0019 class MapBase;
0020 
0021 /**
0022  * Base class for most PulseAudio objects.
0023  */
0024 class PULSEAUDIOQT_EXPORT PulseObject : public QObject
0025 {
0026     Q_OBJECT
0027     Q_PROPERTY(QString name READ name NOTIFY nameChanged)
0028     Q_PROPERTY(QString iconName READ iconName CONSTANT)
0029     Q_PROPERTY(QVariantMap properties READ properties NOTIFY propertiesChanged)
0030 
0031 public:
0032     ~PulseObject();
0033 
0034     QString name() const;
0035 
0036     /**
0037      * A freedesktop.org icon name that fits this object.
0038      */
0039     QString iconName() const;
0040 
0041     /**
0042      * A map of properties associated with this object.
0043      * The set of available properties depends on the type of object.
0044      */
0045     QVariantMap properties() const;
0046 
0047 Q_SIGNALS:
0048     /**
0049      * Emitted when any of the \ref properties changed.
0050      */
0051     void propertiesChanged();
0052 
0053     void nameChanged();
0054 
0055 protected:
0056     /** @private */
0057     explicit PulseObject(QObject *parent);
0058 
0059     /** @private */
0060     class PulseObjectPrivate *const d;
0061 
0062 private:
0063     // Ensure that we get properly parented.
0064     PulseObject();
0065     friend class IndexedPulseObjectPrivate;
0066     friend class ClientPrivate;
0067     friend class CardPrivate;
0068     friend class ModulePrivate;
0069     friend class VolumeObjectPrivate;
0070     friend class ProfilePrivate;
0071     friend class StreamRestorePrivate;
0072 };
0073 
0074 } // PulseAudioQt
0075 
0076 #endif // PULSEOBJECT_H