File indexing completed on 2024-05-12 05:38:45

0001 /*
0002     SPDX-FileCopyrightText: 2009 Benjamin K. Stuhl <bks24@cornell.edu>
0003 
0004     SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QList>
0010 #include <QObject>
0011 #include <QString>
0012 #include <QStringList>
0013 #include <QVariant>
0014 
0015 namespace UdevQt
0016 {
0017 class DevicePrivate;
0018 class Device
0019 {
0020 public:
0021     Device();
0022     Device(const Device &other);
0023     ~Device();
0024     Device &operator=(const Device &other);
0025 
0026     bool isValid() const;
0027     QString subsystem() const;
0028     QString devType() const;
0029     QString name() const;
0030     QString sysfsPath() const;
0031     int sysfsNumber() const;
0032     QString driver() const;
0033     QString primaryDeviceFile() const;
0034     QStringList alternateDeviceSymlinks() const;
0035     QStringList deviceProperties() const;
0036     QStringList sysfsProperties() const;
0037     Device parent() const;
0038 
0039     // ### should this really be a QVariant? as far as udev knows, everything is a string...
0040     // see also Client::devicesByProperty
0041     QVariant deviceProperty(const QString &name) const;
0042     QString decodedDeviceProperty(const QString &name) const;
0043     QVariant sysfsProperty(const QString &name) const;
0044     Device ancestorOfType(const QString &subsys, const QString &devtype) const;
0045 
0046 private:
0047     explicit Device(DevicePrivate *devPrivate);
0048     friend class Client;
0049     friend class ClientPrivate;
0050 
0051     DevicePrivate *d;
0052 };
0053 
0054 typedef QList<Device> DeviceList;
0055 
0056 }