mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 14:55:36 +08:00
Ref T739, functions to register devices (will be used by DBus/proxy)
This commit is contained in:
committed by
Mat Sutcliffe
parent
fdf4bf6b57
commit
e109106102
@@ -30,7 +30,7 @@ namespace BlackMisc
|
||||
{
|
||||
switch (m)
|
||||
{
|
||||
case QAudio::AudioInput: return InputDevice;
|
||||
case QAudio::AudioInput: return InputDevice;
|
||||
case QAudio::AudioOutput: return OutputDevice;
|
||||
default: break;
|
||||
}
|
||||
|
||||
@@ -55,6 +55,12 @@ namespace BlackMisc
|
||||
//! Type
|
||||
DeviceType getType() const { return m_type; }
|
||||
|
||||
//! Input device
|
||||
bool isInputDevice() const { return this->getType() == InputDevice; }
|
||||
|
||||
//! Output device
|
||||
bool isOutputDevice() const { return this->getType() == OutputDevice; }
|
||||
|
||||
//! Valid audio device object?
|
||||
bool isValid() const { return !m_deviceName.isEmpty(); }
|
||||
|
||||
|
||||
@@ -59,6 +59,70 @@ namespace BlackMisc
|
||||
return defaultDevice;
|
||||
}
|
||||
|
||||
CAudioDeviceInfoList CAudioDeviceInfoList::findByHostName(const QString &hostName) const
|
||||
{
|
||||
if (hostName.isEmpty()) { return {}; }
|
||||
|
||||
CAudioDeviceInfoList devices;
|
||||
for (const CAudioDeviceInfo &d : *this)
|
||||
{
|
||||
if (stringCompare(hostName, d.getHostName(), Qt::CaseInsensitive))
|
||||
{
|
||||
devices.push_back(d);
|
||||
}
|
||||
}
|
||||
return devices;
|
||||
}
|
||||
|
||||
CAudioDeviceInfo CAudioDeviceInfoList::findRegisteredDevice(const CAudioDeviceInfo &device) const
|
||||
{
|
||||
CAudioDeviceInfoList devices = device.isInputDevice() ? this->getInputDevices() : this->getOutputDevices();
|
||||
if (devices.isEmpty()) { return {}; }
|
||||
|
||||
devices = devices.findByHostName(device.getHostName());
|
||||
if (devices.isEmpty()) { return {}; }
|
||||
|
||||
return devices.findByName(device.getName());
|
||||
}
|
||||
|
||||
void CAudioDeviceInfoList::registerDevice(const CAudioDeviceInfo &device)
|
||||
{
|
||||
if (!device.isValid()) { return; }
|
||||
if (this->isRegisteredDevice(device)) { return; }
|
||||
this->push_back(device);
|
||||
}
|
||||
|
||||
void CAudioDeviceInfoList::registerDevices(const CAudioDeviceInfoList &devices)
|
||||
{
|
||||
for (const CAudioDeviceInfo &device : devices)
|
||||
{
|
||||
this->registerDevice(device);
|
||||
}
|
||||
}
|
||||
|
||||
void CAudioDeviceInfoList::unRegisterDevice(const CAudioDeviceInfo &device)
|
||||
{
|
||||
if (!device.isValid()) { return; }
|
||||
const CAudioDeviceInfo registeredDevice = this->findRegisteredDevice(device);
|
||||
if (registeredDevice.isValid())
|
||||
{
|
||||
this->remove(registeredDevice);
|
||||
}
|
||||
}
|
||||
|
||||
void CAudioDeviceInfoList::unRegisterDevices(const CAudioDeviceInfoList &devices)
|
||||
{
|
||||
for (const CAudioDeviceInfo &device : devices)
|
||||
{
|
||||
this->unRegisterDevice(device);
|
||||
}
|
||||
}
|
||||
|
||||
bool CAudioDeviceInfoList::isRegisteredDevice(const CAudioDeviceInfo &device) const
|
||||
{
|
||||
return this->findRegisteredDevice(device).isValid();
|
||||
}
|
||||
|
||||
int CAudioDeviceInfoList::count(CAudioDeviceInfo::DeviceType type) const
|
||||
{
|
||||
return static_cast<int>(std::count_if(this->begin(), this->end(), [type](const CAudioDeviceInfo & device)
|
||||
|
||||
@@ -51,6 +51,27 @@ namespace BlackMisc
|
||||
//! Find by name
|
||||
CAudioDeviceInfo findByNameOrDefault(const QString &name, const CAudioDeviceInfo defaultDevice, bool strict = false) const;
|
||||
|
||||
//! Find by host name
|
||||
CAudioDeviceInfoList findByHostName(const QString &hostName) const;
|
||||
|
||||
//! Find registered device
|
||||
CAudioDeviceInfo findRegisteredDevice(const CAudioDeviceInfo &device) const;
|
||||
|
||||
//! Register device
|
||||
void registerDevice(const CAudioDeviceInfo &device);
|
||||
|
||||
//! Register devices
|
||||
void registerDevices(const CAudioDeviceInfoList &devices);
|
||||
|
||||
//! Un-register device
|
||||
void unRegisterDevice(const CAudioDeviceInfo &device);
|
||||
|
||||
//! Un-register devices
|
||||
void unRegisterDevices(const CAudioDeviceInfoList &devices);
|
||||
|
||||
//! Is that a registered device?
|
||||
bool isRegisteredDevice(const CAudioDeviceInfo &device) const;
|
||||
|
||||
//! Count (as of type)
|
||||
int count(CAudioDeviceInfo::DeviceType type) const;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user