]> git.sesse.net Git - kdenlive/blobdiff - src/kdenlivesettingsdialog.cpp
jogshuttle: add support for shuttles on newer systems - part2
[kdenlive] / src / kdenlivesettingsdialog.cpp
index 42e5813338897ecd55a89a2c52e288507b8b06d3..8e97b33d997c0e7065fa7dbc330f6570ab482d0c 100644 (file)
@@ -524,37 +524,25 @@ void KdenliveSettingsDialog::slotCheckShuttle(int state)
 #ifdef USE_JOGSHUTTLE
     m_configShuttle.config_group->setEnabled(state);
     if (m_configShuttle.shuttledevicelist->count() == 0) {
-        QString devDirStr = "/dev/input/by-id/";
+        QString devDirStr = "/dev/input/by-id";
         QDir devDir(devDirStr);
-        if (devDir.exists()) {
-            QStringList fileList = devDir.entryList(QDir::Files);
-            foreach (const QString &fileName, fileList) {
-                QString devFullPath(devDirStr + fileName);
-                QString fileLink = JogShuttle::enumerateDevice(devFullPath);
-                kDebug() << QString(" [%1] ").arg(fileName);
-                kDebug() << QString(" [%1] ").arg(fileLink);
-                char name[256] = "unknown";
-                int fd = KDE_open((char*)fileLink.toUtf8().data(), O_RDONLY);
-                if (fd >= 0 && ioctl(fd, EVIOCGNAME(sizeof(name)), name) >= 0) {
-                    m_configShuttle.shuttledevicelist->addItem(name, devFullPath);
-                }
-                ::close(fd);
-            }
-        } else {
-            // parse devices
-            QString baseName = "/dev/input/event";
-            int fd;
-            for (int i = 0; i < 30; ++i) {
-                QString filename = baseName + QString::number(i);
-                kDebug() << "/// CHECKING device: " << filename;
-
-                char name[256] = "unknown";
-                fd = KDE_open((char *) filename.toUtf8().data(), O_RDONLY);
-                if (fd >= 0 && ioctl(fd, EVIOCGNAME(sizeof(name)), name) >= 0) {
-                    m_configShuttle.shuttledevicelist->addItem(name, filename);
-                }
-                ::close(fd);
-            }
+        if (!devDir.exists()) {
+            devDirStr = "/dev/input";
+        }
+
+        DeviceMap devMap = JogShuttle::enumerateDevices(devDirStr);
+#if 0
+        if (!devMap.isEmpty()) {
+            m_configShuttle.shuttledevicelist->clear();
+        }
+#endif
+        DeviceMapIter iter = devMap.begin();
+        while (iter != devMap.end()) {
+            kDebug() << iter.key() << ": " << iter.value();
+            m_configShuttle.shuttledevicelist->addItem(
+                    iter.key(),
+                    iter.value());
+            ++iter;
         }
 
         if (KdenliveSettings::shuttledevice().isEmpty()) {