From 22f6ea68f792beba8a78cfa1b99cf7fc7bc40649 Mon Sep 17 00:00:00 2001 From: Ed Rogalsky Date: Fri, 28 Feb 2014 23:08:56 +0100 Subject: [PATCH] jogshuttle: make shuttle device selection more straightforward --- src/kdenlivesettings.kcfg | 10 + src/kdenlivesettingsdialog.cpp | 75 +++++--- src/kdenlivesettingsdialog.h | 1 + src/ui/configjogshuttle_ui.ui | 342 +++++++++++++++++++++++---------- 4 files changed, 307 insertions(+), 121 deletions(-) diff --git a/src/kdenlivesettings.kcfg b/src/kdenlivesettings.kcfg index 40c0909d..59c03341 100644 --- a/src/kdenlivesettings.kcfg +++ b/src/kdenlivesettings.kcfg @@ -523,6 +523,16 @@ + + + + + + + + + + diff --git a/src/kdenlivesettingsdialog.cpp b/src/kdenlivesettingsdialog.cpp index 8e97b33d..b298e8c6 100644 --- a/src/kdenlivesettingsdialog.cpp +++ b/src/kdenlivesettingsdialog.cpp @@ -133,9 +133,12 @@ KdenliveSettingsDialog::KdenliveSettingsDialog(const QMap& map QWidget *p5 = new QWidget; m_configShuttle.setupUi(p5); + m_configShuttle.toolBtnReload->setIcon(KIcon("view-refresh")); #ifdef USE_JOGSHUTTLE connect(m_configShuttle.kcfg_enableshuttle, SIGNAL(stateChanged(int)), this, SLOT(slotCheckShuttle(int))); connect(m_configShuttle.shuttledevicelist, SIGNAL(activated(int)), this, SLOT(slotUpdateShuttleDevice(int))); + connect(m_configShuttle.toolBtnReload, SIGNAL(clicked(bool)), this, SLOT(slotReloadShuttleDevices())); + slotCheckShuttle(KdenliveSettings::enableshuttle()); m_configShuttle.shuttledisabled->hide(); @@ -523,31 +526,17 @@ 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"; - QDir devDir(devDirStr); - if (!devDir.exists()) { - devDirStr = "/dev/input"; - } + m_configShuttle.shuttledevicelist->clear(); - 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; - } + QStringList devNames = KdenliveSettings::shuttledevicenames(); + QStringList devPaths = KdenliveSettings::shuttledevicepaths(); - if (KdenliveSettings::shuttledevice().isEmpty()) { - QTimer::singleShot(1500, this, SLOT(slotUpdateShuttleDevice())); - } + if (devNames.count() != devPaths.count()) { + return; + } + for (int i = 0; i < devNames.count(); i++) { + m_configShuttle.shuttledevicelist->addItem( + devNames.at(i), devPaths.at(i)); } #endif /* USE_JOGSHUTTLE */ } @@ -1133,6 +1122,46 @@ void KdenliveSettingsDialog::slotReloadBlackMagic() } m_configSdl.kcfg_external_display->setEnabled(KdenliveSettings::decklink_device_found()); } + +void KdenliveSettingsDialog::slotReloadShuttleDevices() +{ +#ifdef USE_JOGSHUTTLE + QString devDirStr = "/dev/input/by-id"; + QDir devDir(devDirStr); + if (!devDir.exists()) { + devDirStr = "/dev/input"; + } + + DeviceMap devMap = JogShuttle::enumerateDevices(devDirStr); + if (!devMap.isEmpty()) { + m_configShuttle.shuttledevicelist->clear(); + } + + QStringList devNamesList; + QStringList devPathList; + DeviceMapIter iter = devMap.begin(); + if (iter == devMap.end()) { + KdenliveSettings::shuttledevicenames().clear(); + KdenliveSettings::shuttledevicepaths().clear(); + m_configShuttle.shuttledevicelist->clear(); + } + while (iter != devMap.end()) { + kDebug() << iter.key() << ": " << iter.value(); + m_configShuttle.shuttledevicelist->addItem(iter.key(), iter.value()); + devNamesList << iter.key(); + devPathList << iter.value(); + ++iter; + } + + KdenliveSettings::setShuttledevicenames(devNamesList); + KdenliveSettings::setShuttledevicepaths(devPathList); + QTimer::singleShot(200, this, SLOT(slotUpdateShuttleDevice())); + + kDebug() << "Devices reloded"; + +#endif //USE_JOGSHUTTLE +} + #include "kdenlivesettingsdialog.moc" diff --git a/src/kdenlivesettingsdialog.h b/src/kdenlivesettingsdialog.h index f00a32fa..3a9c1c7b 100644 --- a/src/kdenlivesettingsdialog.h +++ b/src/kdenlivesettingsdialog.h @@ -79,6 +79,7 @@ private slots: void slotUpdateGrabProfile(int ix = 0); void slotEditVideo4LinuxProfile(); void slotReloadBlackMagic(); + void slotReloadShuttleDevices(); private: KPageWidgetItem *m_page1; diff --git a/src/ui/configjogshuttle_ui.ui b/src/ui/configjogshuttle_ui.ui index 2b69f8c8..49a15136 100644 --- a/src/ui/configjogshuttle_ui.ui +++ b/src/ui/configjogshuttle_ui.ui @@ -6,8 +6,8 @@ 0 0 - 299 - 548 + 455 + 749 @@ -31,6 +31,19 @@ + + + + Qt::Vertical + + + + 20 + 56 + + + + @@ -39,190 +52,323 @@ Device configuration + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + - - + + + + + 0 + 0 + + - Button 12 + + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + false - - + + - Button 14 + ... - - + + - Button 13 + Button 1 - - + + + + + 0 + 0 + + - Button 11 + Device - - + + + + + 0 + 0 + + - Button 7 + Button 15 - - + + + + + 0 + 0 + + + + + + + + + + + + 0 + 0 + + - Button 8 + Button 13 - + + + + 0 + 0 + + - Button 9 + Button 8 - - + + + + + + + + 0 + 0 + + - Button 6 + Button 4 + + + 0 + 0 + + - Device + Device name - - - - - + + + + + 0 + 0 + + - + Button 5 - - + + + + + + + + + + + + + + 0 + 0 + + - Button 1 + Button 7 + + + + + + + + 0 + 0 + - - + + - - + + + + + + + + 0 + 0 + + - Button 2 + Button 9 - - - - + + + + 0 + 0 + + - Button 3 + Button 2 - + - - - - - + + + + + 0 + 0 + + - Button 4 + Button 10 - - + + + + + 0 + 0 + + - Button 5 + Button 11 - - + + + + + 0 + 0 + + + - - + + + + + 0 + 0 + + - Button 10 + Button 6 - - - - + - - + + - - + + - - + + + + + - + + + + 0 + 0 + + - Button 15 + Button 14 - - - - - - - - - - - + + + + + 0 + 0 + + + + Button 3 + + - - + + + + + 0 + 0 + + + + Button 12 + + - - - - Qt::Vertical - - - - 20 - 56 - - - - -- 2.39.2