From 6b6b99f30e4835bf672f03bd5471d5fed6209758 Mon Sep 17 00:00:00 2001 From: f4exb Date: Fri, 15 Sep 2017 01:24:51 +0200 Subject: [PATCH] PluginManager::selectSampleSourceBySerialOrSequence: removed GUI interaction --- sdrbase/device/devicesourceapi.cpp | 5 +++++ sdrbase/device/devicesourceapi.h | 3 +++ sdrbase/mainwindow.cpp | 8 +++++++- sdrbase/plugin/pluginmanager.cpp | 23 ++++++++++++++--------- sdrbase/plugin/pluginmanager.h | 2 ++ 5 files changed, 31 insertions(+), 10 deletions(-) diff --git a/sdrbase/device/devicesourceapi.cpp b/sdrbase/device/devicesourceapi.cpp index 50b46c2fb..517ccb4b3 100644 --- a/sdrbase/device/devicesourceapi.cpp +++ b/sdrbase/device/devicesourceapi.cpp @@ -162,6 +162,11 @@ void DeviceSourceAPI::setSampleSourceSerial(const QString& serial) m_sampleSourceSerial = serial; } +void DeviceSourceAPI::setSampleSourceDisplayName(const QString& name) +{ + m_sampleSourceDisplayName = name; +} + void DeviceSourceAPI::setSampleSourceSequence(int sequence) { m_sampleSourceSequence = sequence; diff --git a/sdrbase/device/devicesourceapi.h b/sdrbase/device/devicesourceapi.h index 79f0eb73f..7c39e38f3 100644 --- a/sdrbase/device/devicesourceapi.h +++ b/sdrbase/device/devicesourceapi.h @@ -70,12 +70,14 @@ public: void setHardwareId(const QString& id); void setSampleSourceId(const QString& id); void setSampleSourceSerial(const QString& serial); + void setSampleSourceDisplayName(const QString& serial); void setSampleSourceSequence(int sequence); void setSampleSourcePluginInstanceUI(PluginInstanceUI *gui); const QString& getHardwareId() const { return m_hardwareId; } const QString& getSampleSourceId() const { return m_sampleSourceId; } const QString& getSampleSourceSerial() const { return m_sampleSourceSerial; } + const QString& getSampleSourceDisplayName() const { return m_sampleSourceDisplayName; } uint32_t getSampleSourceSequence() const { return m_sampleSourceSequence; } void registerChannelInstance(const QString& channelName, PluginInstanceUI* pluginGUI); @@ -144,6 +146,7 @@ protected: QString m_hardwareId; QString m_sampleSourceId; QString m_sampleSourceSerial; + QString m_sampleSourceDisplayName; uint32_t m_sampleSourceSequence; PluginInstanceUI* m_sampleSourcePluginInstanceUI; diff --git a/sdrbase/mainwindow.cpp b/sdrbase/mainwindow.cpp index a5d0c3e5c..617373d77 100644 --- a/sdrbase/mainwindow.cpp +++ b/sdrbase/mainwindow.cpp @@ -212,7 +212,13 @@ void MainWindow::addSourceDevice() ui->tabInputsSelect->addTab(m_deviceUIs.back()->m_samplingDeviceControl, tabNameCStr); ui->tabInputsSelect->setTabToolTip(deviceTabIndex, QString(uidCStr)); - m_pluginManager->selectSampleSourceBySerialOrSequence("sdrangel.samplesource.filesource", "0", 0, m_deviceUIs.back()->m_deviceSourceAPI); + int deviceIndex = m_pluginManager->selectSampleSourceBySerialOrSequence("sdrangel.samplesource.filesource", "0", 0, m_deviceUIs.back()->m_deviceSourceAPI); + + QWidget *gui; + PluginInstanceUI *pluginGUI = m_pluginManager->getPluginInterfaceAt(deviceIndex)->createSampleSourcePluginInstanceGUI( + m_deviceUIs.back()->m_deviceSourceAPI->getSampleSourceId(), &gui, m_deviceUIs.back()->m_deviceSourceAPI); + m_deviceUIs.back()->m_deviceSourceAPI->setSampleSourcePluginInstanceUI(pluginGUI); + m_deviceUIs.back()->m_deviceSourceAPI->setInputGUI(gui, m_deviceUIs.back()->m_deviceSourceAPI->getSampleSourceDisplayName()); } void MainWindow::addSinkDevice() diff --git a/sdrbase/plugin/pluginmanager.cpp b/sdrbase/plugin/pluginmanager.cpp index f2cb22d7d..f1d21bd35 100644 --- a/sdrbase/plugin/pluginmanager.cpp +++ b/sdrbase/plugin/pluginmanager.cpp @@ -508,11 +508,7 @@ int PluginManager::selectSampleSourceBySerialOrSequence(const QString& sourceId, deviceAPI->setHardwareId(m_sampleSourceDevices[index].m_hadrwareId); deviceAPI->setSampleSourceId(m_sampleSourceDevices[index].m_deviceId); deviceAPI->setSampleSourceSerial(m_sampleSourceDevices[index].m_deviceSerial); - - QWidget *gui; - PluginInstanceUI *pluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginInstanceGUI(m_sampleSourceDevices[index].m_deviceId, &gui, deviceAPI); - deviceAPI->setSampleSourcePluginInstanceUI(pluginGUI); - deviceAPI->setInputGUI(gui, m_sampleSourceDevices[index].m_displayName); + deviceAPI->setSampleSourceDisplayName(m_sampleSourceDevices[index].m_displayName); return index; } @@ -585,10 +581,10 @@ int PluginManager::selectSampleSinkBySerialOrSequence(const QString& sinkId, con deviceAPI->setSampleSinkId(m_sampleSinkDevices[index].m_deviceId); deviceAPI->setSampleSinkSerial(m_sampleSinkDevices[index].m_deviceSerial); - QWidget *gui; - PluginInstanceUI *pluginGUI = m_sampleSinkDevices[index].m_plugin->createSampleSinkPluginInstanceGUI(m_sampleSinkDevices[index].m_deviceId, &gui, deviceAPI); - deviceAPI->setSampleSinkPluginInstanceUI(pluginGUI); - deviceAPI->setOutputGUI(gui, m_sampleSinkDevices[index].m_displayName); +// QWidget *gui; +// PluginInstanceUI *pluginGUI = m_sampleSinkDevices[index].m_plugin->createSampleSinkPluginInstanceGUI(m_sampleSinkDevices[index].m_deviceId, &gui, deviceAPI); +// deviceAPI->setSampleSinkPluginInstanceUI(pluginGUI); +// deviceAPI->setOutputGUI(gui, m_sampleSinkDevices[index].m_displayName); return index; } @@ -670,6 +666,15 @@ void PluginManager::loadPlugins(const QDir& dir) } } +PluginInterface* PluginManager::getPluginInterfaceAt(int index) +{ + if (index < m_sampleSourceDevices.size()) { + return m_sampleSourceDevices[index].m_plugin; + } else { + return 0; + } +} + void PluginManager::populateRxChannelComboBox(QComboBox *channels) { for(PluginAPI::ChannelRegistrations::iterator it = m_rxChannelRegistrations.begin(); it != m_rxChannelRegistrations.end(); ++it) diff --git a/sdrbase/plugin/pluginmanager.h b/sdrbase/plugin/pluginmanager.h index 9d77fcccb..11b09b0c5 100644 --- a/sdrbase/plugin/pluginmanager.h +++ b/sdrbase/plugin/pluginmanager.h @@ -69,6 +69,8 @@ public: int selectSampleSinkBySerialOrSequence(const QString& sinkId, const QString& sinkSerial, uint32_t sinkSequence, DeviceSinkAPI *deviceAPI); void selectSampleSinkByDevice(void *devicePtr, DeviceSinkAPI *deviceAPI); + PluginInterface* getPluginInterfaceAt(int index); + void populateRxChannelComboBox(QComboBox *channels); void createRxChannelInstance(int channelPluginIndex, DeviceSourceAPI *deviceAPI);