mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-17 19:05:31 +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
@@ -55,6 +55,12 @@ namespace BlackMisc
|
|||||||
//! Type
|
//! Type
|
||||||
DeviceType getType() const { return m_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?
|
//! Valid audio device object?
|
||||||
bool isValid() const { return !m_deviceName.isEmpty(); }
|
bool isValid() const { return !m_deviceName.isEmpty(); }
|
||||||
|
|
||||||
|
|||||||
@@ -59,6 +59,70 @@ namespace BlackMisc
|
|||||||
return defaultDevice;
|
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
|
int CAudioDeviceInfoList::count(CAudioDeviceInfo::DeviceType type) const
|
||||||
{
|
{
|
||||||
return static_cast<int>(std::count_if(this->begin(), this->end(), [type](const CAudioDeviceInfo & device)
|
return static_cast<int>(std::count_if(this->begin(), this->end(), [type](const CAudioDeviceInfo & device)
|
||||||
|
|||||||
@@ -51,6 +51,27 @@ namespace BlackMisc
|
|||||||
//! Find by name
|
//! Find by name
|
||||||
CAudioDeviceInfo findByNameOrDefault(const QString &name, const CAudioDeviceInfo defaultDevice, bool strict = false) const;
|
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)
|
//! Count (as of type)
|
||||||
int count(CAudioDeviceInfo::DeviceType type) const;
|
int count(CAudioDeviceInfo::DeviceType type) const;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user