18Server::Server(Context *context)
20 , d(new ServerPrivate(this))
24 connect(&context->d->m_sinks, &MapBaseQObject::added,
this, &Server::updateDefaultDevices);
25 connect(&context->d->m_sinks, &MapBaseQObject::removed,
this, &Server::updateDefaultDevices);
26 connect(&context->d->m_sources, &MapBaseQObject::added,
this, &Server::updateDefaultDevices);
27 connect(&context->d->m_sources, &MapBaseQObject::removed,
this, &Server::updateDefaultDevices);
35ServerPrivate::ServerPrivate(Server *q)
37 , m_defaultSink(nullptr)
38 , m_defaultSource(nullptr)
42ServerPrivate::~ServerPrivate()
46Sink *Server::defaultSink()
const
48 return d->m_defaultSink;
51void Server::setDefaultSink(Sink *sink)
54 Context::instance()->setDefaultSink(sink->name());
57Source *Server::defaultSource()
const
59 return d->m_defaultSource;
62void Server::setDefaultSource(Source *source)
65 Context::instance()->setDefaultSource(source->name());
70 if (d->m_defaultSink) {
71 d->m_defaultSink =
nullptr;
72 Q_EMIT defaultSinkChanged(d->m_defaultSink);
75 if (d->m_defaultSource) {
76 d->m_defaultSource =
nullptr;
77 Q_EMIT defaultSourceChanged(d->m_defaultSource);
81void ServerPrivate::update(
const pa_server_info *info)
88 if (isPw != m_isPipeWire) {
90 Q_EMIT q->isPipeWireChanged();
93 q->updateDefaultDevices();
99template<
typename Type,
typename Vector>
106 for (Type *t : vector) {
108 if (out->name() == name) {
112 qCWarning(PULSEAUDIOQT) <<
"No object for name" <<
name;
116void Server::updateDefaultDevices()
118 Sink *sink = findByName<Sink>(Context::instance()->d->m_sinks.data(), d->m_defaultSinkName);
119 Source *source = findByName<Source>(Context::instance()->d->m_sources.data(), d->m_defaultSourceName);
121 if (d->m_defaultSink != sink) {
122 qCDebug(PULSEAUDIOQT) <<
"Default sink changed" << sink;
123 d->m_defaultSink = sink;
124 Q_EMIT defaultSinkChanged(d->m_defaultSink);
127 if (d->m_defaultSource != source) {
128 qCDebug(PULSEAUDIOQT) <<
"Default source changed" << source;
129 d->m_defaultSource = source;
130 Q_EMIT defaultSourceChanged(d->m_defaultSource);
134bool Server::isPipeWire()
const
136 return d->m_isPipeWire;
QString name(StandardShortcut id)
StandardShortcut findByName(const QString &name)
The primary namespace of PulseAudioQt.
bool contains(QChar ch, Qt::CaseSensitivity cs) const const
QString fromUtf8(QByteArrayView str)
bool isEmpty() const const
QFuture< ArgsType< Signal > > connect(Sender *sender, Signal signal)