Solid::AudioInterface::SoundcardType UdevAudioInterfacePrivate::soundcardType() { UdevQt::Device device = m_device->udevDevice(); UdevQt::Device parentDevice = device.parent(); if (parentDevice.isValid()) { QString productName = parentDevice.sysfsProperty("product").toString(); QString deviceName = m_name; if (productName.contains("headset", Qt::CaseInsensitive) || productName.contains("headphone", Qt::CaseInsensitive) || deviceName.contains("headset", Qt::CaseInsensitive) || deviceName.contains("headphone", Qt::CaseInsensitive)) { m_soundcardType = Solid::AudioInterface::Headset; } else if (productName.contains("modem", Qt::CaseInsensitive) || deviceName.contains("modem", Qt::CaseInsensitive)) { m_soundcardType = Solid::AudioInterface::Modem; } else { QString busName = parentDevice.subsystem(); QString driverName = parentDevice.driver(); if (busName == "ieee1394") { m_soundcardType = Solid::AudioInterface::FirewireSoundcard; } else if (busName == "usb" || busName == "usb_device" || driverName.contains("usb", Qt::CaseInsensitive)) { m_soundcardType = Solid::AudioInterface::UsbSoundcard; } else { m_soundcardType = Solid::AudioInterface::InternalSoundcard; } } } return m_soundcardType; }
bool UDevManager::Private::isOfInterest(const UdevQt::Device &device) { #if DETAILED_OUTPUT qDebug() << "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"; qDebug() << "Path:" << device.sysfsPath(); qDebug() << "Properties:" << device.deviceProperties(); Q_FOREACH (const QString &key, device.deviceProperties()) { qDebug() << "\t" << key << ":" << device.deviceProperty(key).toString(); } qDebug() << "Driver:" << device.driver(); qDebug() << "Subsystem:" << device.subsystem(); qDebug() << ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"; #endif if (device.driver() == QLatin1String("processor")) { // Linux ACPI reports processor slots, rather than processors. // Empty slots will not have a system device associated with them. return QFile::exists(device.sysfsPath() + "/sysdev"); } if (device.subsystem() == QLatin1String("sound") && device.deviceProperty("SOUND_FORM_FACTOR").toString() != "internal") { return true; } if (device.subsystem() == QLatin1String("tty")) { QString path = device.deviceProperty("DEVPATH").toString(); int lastSlash = path.length() - path.lastIndexOf(QLatin1String("/")) -1; #if QT_VERSION < 0x050000 QByteArray lastElement = path.right(lastSlash).toAscii(); #else QByteArray lastElement = path.right(lastSlash).toLatin1(); #endif if (lastElement.startsWith("tty") && !path.startsWith("/devices/virtual")) { return true; } } return device.subsystem() == QLatin1String("dvb") || device.subsystem() == QLatin1String("video4linux") || device.subsystem() == QLatin1String("net") || device.deviceProperty("ID_MEDIA_PLAYER").toString().isEmpty() == false || // media-player-info recognized devices device.deviceProperty("ID_GPHOTO2").toInt() == 1; // GPhoto2 cameras }