Changeset View
Changeset View
Standalone View
Standalone View
src/volumeobject.h
Show All 30 Lines | |||||
31 | class VolumeObject : public PulseObject | 31 | class VolumeObject : public PulseObject | ||
32 | { | 32 | { | ||
33 | Q_OBJECT | 33 | Q_OBJECT | ||
34 | Q_PROPERTY(qint64 volume READ volume WRITE setVolume NOTIFY volumeChanged) | 34 | Q_PROPERTY(qint64 volume READ volume WRITE setVolume NOTIFY volumeChanged) | ||
35 | Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) | 35 | Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged) | ||
36 | Q_PROPERTY(bool hasVolume READ hasVolume NOTIFY hasVolumeChanged) | 36 | Q_PROPERTY(bool hasVolume READ hasVolume NOTIFY hasVolumeChanged) | ||
37 | Q_PROPERTY(bool volumeWritable READ isVolumeWritable NOTIFY isVolumeWritableChanged) | 37 | Q_PROPERTY(bool volumeWritable READ isVolumeWritable NOTIFY isVolumeWritableChanged) | ||
38 | Q_PROPERTY(QStringList channels READ channels NOTIFY channelsChanged) | 38 | Q_PROPERTY(QStringList channels READ channels NOTIFY channelsChanged) | ||
39 | Q_PROPERTY(QStringList rawChannels READ rawChannels NOTIFY rawChannelsChanged) | ||||
39 | Q_PROPERTY(QList<qreal> channelVolumes READ channelVolumes NOTIFY channelVolumesChanged) | 40 | Q_PROPERTY(QList<qreal> channelVolumes READ channelVolumes NOTIFY channelVolumesChanged) | ||
40 | public: | 41 | public: | ||
41 | explicit VolumeObject(QObject *parent); | 42 | explicit VolumeObject(QObject *parent); | ||
42 | ~VolumeObject() override; | 43 | ~VolumeObject() override; | ||
43 | 44 | | |||
44 | template <typename PAInfo> | 45 | template <typename PAInfo> | ||
45 | void updateVolumeObject(PAInfo *info) | 46 | void updateVolumeObject(PAInfo *info) | ||
46 | { | 47 | { | ||
Show All 11 Lines | |||||
58 | infoChannels.reserve(info->channel_map.channels); | 59 | infoChannels.reserve(info->channel_map.channels); | ||
59 | for (int i = 0; i < info->channel_map.channels; ++i) { | 60 | for (int i = 0; i < info->channel_map.channels; ++i) { | ||
60 | infoChannels << QString::fromUtf8(pa_channel_position_to_pretty_string(info->channel_map.map[i])); | 61 | infoChannels << QString::fromUtf8(pa_channel_position_to_pretty_string(info->channel_map.map[i])); | ||
61 | } | 62 | } | ||
62 | if (m_channels != infoChannels) { | 63 | if (m_channels != infoChannels) { | ||
63 | m_channels = infoChannels; | 64 | m_channels = infoChannels; | ||
64 | Q_EMIT channelsChanged(); | 65 | Q_EMIT channelsChanged(); | ||
65 | } | 66 | } | ||
67 | | ||||
68 | QStringList infoRawChannels; | ||||
69 | infoRawChannels.reserve(info->channel_map.channels); | ||||
70 | for (int i = 0; i < info->channel_map.channels; ++i) { | ||||
71 | infoRawChannels << QString::fromUtf8(pa_channel_position_to_string(info->channel_map.map[i])); | ||||
72 | } | ||||
73 | if (m_rawChannels != infoRawChannels) { | ||||
74 | m_rawChannels = infoRawChannels; | ||||
75 | Q_EMIT rawChannelsChanged(); | ||||
76 | } | ||||
66 | } | 77 | } | ||
67 | 78 | | |||
68 | qint64 volume() const; | 79 | qint64 volume() const; | ||
69 | virtual void setVolume(qint64 volume) = 0; | 80 | virtual void setVolume(qint64 volume) = 0; | ||
70 | 81 | | |||
71 | bool isMuted() const; | 82 | bool isMuted() const; | ||
72 | virtual void setMuted(bool muted) = 0; | 83 | virtual void setMuted(bool muted) = 0; | ||
73 | 84 | | |||
74 | bool hasVolume() const; | 85 | bool hasVolume() const; | ||
75 | bool isVolumeWritable() const; | 86 | bool isVolumeWritable() const; | ||
76 | 87 | | |||
77 | QStringList channels() const; | 88 | QStringList channels() const; | ||
89 | QStringList rawChannels() const; | ||||
78 | QList<qreal> channelVolumes() const; | 90 | QList<qreal> channelVolumes() const; | ||
79 | Q_INVOKABLE virtual void setChannelVolume(int channel, qint64 volume) = 0; | 91 | Q_INVOKABLE virtual void setChannelVolume(int channel, qint64 volume) = 0; | ||
80 | 92 | | |||
81 | Q_SIGNALS: | 93 | Q_SIGNALS: | ||
82 | void volumeChanged(); | 94 | void volumeChanged(); | ||
83 | void mutedChanged(); | 95 | void mutedChanged(); | ||
84 | void hasVolumeChanged(); | 96 | void hasVolumeChanged(); | ||
85 | void isVolumeWritableChanged(); | 97 | void isVolumeWritableChanged(); | ||
86 | void channelsChanged(); | 98 | void channelsChanged(); | ||
99 | void rawChannelsChanged(); | ||||
87 | void channelVolumesChanged(); | 100 | void channelVolumesChanged(); | ||
88 | 101 | | |||
89 | protected: | 102 | protected: | ||
90 | pa_cvolume cvolume() const; | 103 | pa_cvolume cvolume() const; | ||
91 | 104 | | |||
92 | pa_cvolume m_volume; | 105 | pa_cvolume m_volume; | ||
93 | bool m_muted; | 106 | bool m_muted; | ||
94 | bool m_hasVolume; | 107 | bool m_hasVolume; | ||
95 | bool m_volumeWritable; | 108 | bool m_volumeWritable; | ||
96 | QStringList m_channels; | 109 | QStringList m_channels; | ||
110 | QStringList m_rawChannels; | ||||
97 | }; | 111 | }; | ||
98 | 112 | | |||
99 | } // QPulseAudio | 113 | } // QPulseAudio | ||
100 | 114 | | |||
101 | #endif // VOLUMEOBJECT_H | 115 | #endif // VOLUMEOBJECT_H |