[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    KDE/kdelibs/solid/solid
From:       Rafael Fernández López <ereslibre () kde ! org>
Date:       2010-10-03 17:00:16
Message-ID: 20101003170016.8CE81AC891 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1182180 by ereslibre:

Port UDev backend to use the Qt library wrapper that was written by Benjamin


 M  +2 -0      CMakeLists.txt  
 A             backends/shared/udevqt.h   [License: LGPL (v2+)]
 A             backends/shared/udevqt_p.h   [License: LGPL (v2+)]
 A             backends/shared/udevqtclient.cpp   [License: LGPL (v2+)]
 A             backends/shared/udevqtdevice.cpp   [License: LGPL (v2+)]
 M  +1 -9      backends/udev/udev.h  
 M  +16 -16    backends/udev/udevdevice.cpp  
 M  +4 -5      backends/udev/udevdevice.h  
 M  +15 -38    backends/udev/udevmanager.cpp  


--- trunk/KDE/kdelibs/solid/solid/CMakeLists.txt #1182179:1182180
@@ -173,6 +173,8 @@
       backends/udev/udevdeviceinterface.cpp
       backends/udev/udevgenericinterface.cpp
       backends/udev/udevcamera.cpp
+      backends/shared/udevqtclient.cpp
+      backends/shared/udevqtdevice.cpp
       )
    endif( UDEV_FOUND )
 
--- trunk/KDE/kdelibs/solid/solid/backends/udev/udev.h #1182179:1182180
@@ -21,16 +21,8 @@
 #ifndef SOLID_BACKENDS_UDEV_H
 #define SOLID_BACKENDS_UDEV_H
 
-#include <libudev.h>
+#include "../shared/udevqt.h"
 
 #define UDEV_UDI_PREFIX "/org/kde/solid/udev"
 
-typedef struct udev udev_;
-typedef struct udev_list udev_list_;
-typedef struct udev_queue udev_queue_;
-typedef struct udev_device udev_device_;
-typedef struct udev_monitor udev_monitor_;
-typedef struct udev_enumerate udev_enumerate_;
-typedef struct udev_list_entry udev_list_entry_;
-
 #endif // SOLID_BACKENDS_UDEV_H
--- trunk/KDE/kdelibs/solid/solid/backends/udev/udevdevice.cpp #1182179:1182180
@@ -25,15 +25,14 @@
 
 using namespace Solid::Backends::UDev;
 
-UDevDevice::UDevDevice(udev_device_ *const device)
-    : Solid::Ifaces::Device(),
-      m_device(device)
+UDevDevice::UDevDevice(const UdevQt::Device device)
+    : Solid::Ifaces::Device()
+    , m_device(device)
 {
 }
 
 UDevDevice::~UDevDevice()
 {
-    udev_device_unref(m_device);
 }
 
 QString UDevDevice::udi() const
@@ -48,12 +47,12 @@
 
 QString UDevDevice::vendor() const
 {
-    return systemAttribute("manufacturer");
+    return m_device.sysfsProperty("manufacturer").toString();
 }
 
 QString UDevDevice::product() const
 {
-    return systemAttribute("product");
+    return m_device.sysfsProperty("product").toString();
 }
 
 QString UDevDevice::icon() const
@@ -114,19 +113,20 @@
 
 QVariant UDevDevice::property(const QString &key) const
 {
-    return QString::fromUtf8(udev_device_get_property_value(m_device, key.toAscii()));
+    const QVariant res = m_device.deviceProperty(key);
+    if (res.isValid()) {
+        return res;
 }
+    return m_device.sysfsProperty(key);
+}
 
 QMap<QString, QVariant> UDevDevice::allProperties() const
 {
-    QMap<QString, QVariant> properties;
-
-    udev_list_entry_ *list_entry;
-    udev_list_entry_foreach(list_entry, udev_device_get_properties_list_entry(m_device)) {
-        properties[udev_list_entry_get_name(list_entry)] = udev_list_entry_get_value(list_entry);
+    QMap<QString, QVariant> res;
+    foreach (const QString &prop, m_device.deviceProperties()) {
+        res[prop] = property(prop);
     }
-
-    return properties;
+    return res;
 }
 
 bool UDevDevice::propertyExists(const QString &key) const
@@ -136,12 +136,12 @@
 
 QString UDevDevice::systemAttribute(const char *attribute) const
 {
-    return QString::fromUtf8(udev_device_get_sysattr_value(m_device, attribute));
+    return m_device.sysfsProperty(attribute).toString();
 }
 
 QString UDevDevice::deviceName() const
 {
-    return QString::fromUtf8(udev_device_get_syspath(m_device));
+    return m_device.sysfsPath();
 }
 
 QString UDevDevice::devicePath() const
--- trunk/KDE/kdelibs/solid/solid/backends/udev/udevdevice.h #1182179:1182180
@@ -21,11 +21,11 @@
 #ifndef SOLID_BACKENDS_UDEV_UDEVDEVICE_H
 #define SOLID_BACKENDS_UDEV_UDEVDEVICE_H
 
+#include "udev.h"
+
 #include <solid/ifaces/device.h>
 #include <QtCore/QStringList>
 
-#include "udev.h"
-
 namespace Solid
 {
 namespace Backends
@@ -38,7 +38,7 @@
     Q_OBJECT
 
 public:
-    UDevDevice(struct udev_device *const device);
+    UDevDevice(const UdevQt::Device device);
     virtual ~UDevDevice();
 
     virtual QString udi() const;
@@ -70,8 +70,7 @@
     QString devicePath() const;
 
 private:
-
-    udev_device_ *m_device;
+    UdevQt::Device m_device;
 };
 
 }
--- trunk/KDE/kdelibs/solid/solid/backends/udev/udevmanager.cpp #1182179:1182180
@@ -25,6 +25,7 @@
 #include "../shared/rootdevice.h"
 
 #include <QtCore/QSet>
+#include <QtCore/QDebug>
 
 using namespace Solid::Backends::UDev;
 using namespace Solid::Backends::Shared;
@@ -35,52 +36,24 @@
     Private();
     ~Private();
 
-    QStringList deviceListFromEnumerate(udev_enumerate_ *en) const;
-
-    udev_ *udev;
-    QSet<Solid::DeviceInterface::Type> supportedInterfaces;
+    UdevQt::Client *const m_client;
+    QSet<Solid::DeviceInterface::Type> m_supportedInterfaces;
 };
 
 UDevManager::Private::Private()
-    : udev(udev_new())
+    : m_client(new UdevQt::Client)
 {
 }
 
 UDevManager::Private::~Private()
 {
-    udev_unref(udev);
+    delete m_client;
 }
 
-QStringList UDevManager::Private::deviceListFromEnumerate(udev_enumerate_ *en) const
-{
-    QStringList ret;
-    udev_list_entry_ *list, *entry;
-
-    udev_enumerate_scan_devices(en);
-    list = udev_enumerate_get_list_entry(en);
-    udev_list_entry_foreach (entry, list) {
-        udev_device_ *const device = udev_device_new_from_syspath(udev,
-                                                                  udev_list_entry_get_name(entry));
-
-        const char *const subsystem = udev_device_get_subsystem(device);
-
-        if (!device) {
-            continue;
-        }
-        ret << QString(UDEV_UDI_PREFIX) + udev_device_get_syspath(device);
-
-        udev_device_unref(device);
-    }
-
-    udev_enumerate_unref(en);
-
-    return ret;
-}
-
 UDevManager::UDevManager(QObject *parent)
     : d(new Private)
 {
-    d->supportedInterfaces << Solid::DeviceInterface::GenericInterface
+    d->m_supportedInterfaces << Solid::DeviceInterface::GenericInterface
                            << Solid::DeviceInterface::Processor
                            << Solid::DeviceInterface::Camera
                            << Solid::DeviceInterface::PortableMediaPlayer
@@ -99,14 +72,18 @@
 
 QSet<Solid::DeviceInterface::Type> UDevManager::supportedInterfaces() const
 {
-    return d->supportedInterfaces;
+    return d->m_supportedInterfaces;
 }
 
 QStringList UDevManager::allDevices()
 {
-    udev_enumerate_ *const devices = udev_enumerate_new(d->udev);
-    return d->deviceListFromEnumerate(devices);
+    QStringList res;
+    const UdevQt::DeviceList deviceList = d->m_client->allDevices();
+    foreach (const UdevQt::Device &device, deviceList) {
+        res << udiPrefix() + device.sysfsPath();
 }
+    return res;
+}
 
 QStringList UDevManager::devicesFromQuery(const QString &parentUdi,
                                           Solid::DeviceInterface::Type type)
@@ -124,6 +101,6 @@
         device->setIcon("folder-remote"); // TODO: CHANGE ICON
         return device;
     }
-    const QString udi = udi_.right(udi_.size() - QString(UDEV_UDI_PREFIX).size());
-    return new UDevDevice(udev_device_new_from_syspath(d->udev, udi.toLatin1().data()));
+    const QString udi = udi_.right(udi_.size() - udiPrefix().size());
+    return new UDevDevice(d->m_client->deviceBySysfsPath(udi));
 }
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic