Multi device support: GUI enhmcements

This commit is contained in:
f4exb 2016-05-15 04:38:37 +02:00
parent 7452e2fe04
commit 4027b00675
25 changed files with 62 additions and 48 deletions

View File

@ -117,7 +117,7 @@ PluginInterface::SampleSourceDevices AirspyPlugin::enumSampleSources()
return result;
}
PluginGUI* AirspyPlugin::createSampleSourcePluginGUI(const QString& sourceId)
PluginGUI* AirspyPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
{
if (!m_pluginAPI)
{
@ -127,7 +127,7 @@ PluginGUI* AirspyPlugin::createSampleSourcePluginGUI(const QString& sourceId)
if(sourceId == m_deviceTypeID)
{
AirspyGui* gui = new AirspyGui(m_pluginAPI);
m_pluginAPI->setInputGUI(gui);
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui;
}
else

View File

@ -34,7 +34,7 @@ public:
void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
static const QString m_deviceTypeID;

View File

@ -75,7 +75,7 @@ PluginInterface::SampleSourceDevices BlderfPlugin::enumSampleSources()
return result;
}
PluginGUI* BlderfPlugin::createSampleSourcePluginGUI(const QString& sourceId)
PluginGUI* BlderfPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
{
if (!m_pluginAPI)
{
@ -85,7 +85,7 @@ PluginGUI* BlderfPlugin::createSampleSourcePluginGUI(const QString& sourceId)
if(sourceId == m_deviceTypeID)
{
BladerfGui* gui = new BladerfGui(m_pluginAPI);
m_pluginAPI->setInputGUI(gui);
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui;
}
else

View File

@ -34,7 +34,7 @@ public:
void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
static const QString m_deviceTypeID;

View File

@ -74,12 +74,12 @@ PluginInterface::SampleSourceDevices FCDProPlugin::enumSampleSources()
return result;
}
PluginGUI* FCDProPlugin::createSampleSourcePluginGUI(const QString& sourceId)
PluginGUI* FCDProPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
{
if(sourceId == fcd_traits<Pro>::interfaceIID)
{
FCDProGui* gui = new FCDProGui(m_pluginAPI);
m_pluginAPI->setInputGUI(gui);
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui;
}
else

View File

@ -18,7 +18,7 @@ public:
void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
static const QString m_deviceTypeID;

View File

@ -74,12 +74,12 @@ PluginInterface::SampleSourceDevices FCDProPlusPlugin::enumSampleSources()
return result;
}
PluginGUI* FCDProPlusPlugin::createSampleSourcePluginGUI(const QString& sourceId)
PluginGUI* FCDProPlusPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
{
if(sourceId == fcd_traits<ProPlus>::interfaceIID)
{
FCDProPlusGui* gui = new FCDProPlusGui(m_pluginAPI);
m_pluginAPI->setInputGUI(gui);
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui;
}
else

View File

@ -18,7 +18,7 @@ public:
void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
static const QString m_deviceTypeID;

View File

@ -67,12 +67,12 @@ PluginInterface::SampleSourceDevices FileSourcePlugin::enumSampleSources()
return result;
}
PluginGUI* FileSourcePlugin::createSampleSourcePluginGUI(const QString& sourceId)
PluginGUI* FileSourcePlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
{
if(sourceId == m_deviceTypeID)
{
FileSourceGui* gui = new FileSourceGui(m_pluginAPI);
m_pluginAPI->setInputGUI(gui);
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui;
}
else

View File

@ -34,7 +34,7 @@ public:
void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
static const QString m_deviceTypeID;

View File

@ -112,7 +112,7 @@ PluginInterface::SampleSourceDevices HackRFPlugin::enumSampleSources()
return result;
}
PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceId)
PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
{
if (!m_pluginAPI)
{
@ -122,7 +122,7 @@ PluginGUI* HackRFPlugin::createSampleSourcePluginGUI(const QString& sourceId)
if(sourceId == m_deviceTypeID)
{
HackRFGui* gui = new HackRFGui(m_pluginAPI);
m_pluginAPI->setInputGUI(gui);
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui;
}
else

View File

@ -34,7 +34,7 @@ public:
void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
static const QString m_deviceTypeID;

View File

@ -59,11 +59,11 @@ PluginInterface::SampleSourceDevices RTLSDRPlugin::enumSampleSources()
return result;
}
PluginGUI* RTLSDRPlugin::createSampleSourcePluginGUI(const QString& sourceId)
PluginGUI* RTLSDRPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
{
if(sourceId == m_deviceTypeID) {
RTLSDRGui* gui = new RTLSDRGui(m_pluginAPI);
m_pluginAPI->setInputGUI(gui);
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui;
} else {
return NULL;

View File

@ -18,7 +18,7 @@ public:
void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
static const QString m_deviceTypeID;

View File

@ -67,12 +67,12 @@ PluginInterface::SampleSourceDevices SDRdaemonPlugin::enumSampleSources()
return result;
}
PluginGUI* SDRdaemonPlugin::createSampleSourcePluginGUI(const QString& sourceId)
PluginGUI* SDRdaemonPlugin::createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName)
{
if(sourceId == m_deviceTypeID)
{
SDRdaemonGui* gui = new SDRdaemonGui(m_pluginAPI);
m_pluginAPI->setInputGUI(gui);
m_pluginAPI->setInputGUI(gui, sourceDisplayName);
return gui;
}
else

View File

@ -34,7 +34,7 @@ public:
void initPlugin(PluginAPI* pluginAPI);
virtual SampleSourceDevices enumSampleSources();
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId);
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName);
static const QString m_deviceTypeID;

View File

@ -16,6 +16,12 @@
<height>76</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="font">
<font>
<family>Sans Serif</family>
@ -26,6 +32,12 @@
<string>Title &amp; Color</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>3</number>
</property>
<property name="margin">
<number>2</number>
</property>
<item>
<layout class="QHBoxLayout" name="deviceSelectLayout">
<item>

View File

@ -97,8 +97,12 @@ MainWindow::MainWindow(QWidget* parent) :
ui->menu_Window->addAction(ui->presetDock->toggleViewAction());
ui->menu_Window->addAction(ui->channelDock->toggleViewAction());
//ui->tabInputsView->setStyleSheet("QWidget { background: rgb(46,46,46); }");
ui->tabInputsView->setStyleSheet("QWidget { background: rgb(46,46,46); } QToolButton::checked { background: rgb(128,70,0); }");
ui->tabInputsView->setStyleSheet("QWidget { background: rgb(44,44,44); } "
"QToolButton::checked { background: rgb(128,70,0); } "
"QComboBox::item:selected { color: rgb(255,140,0); }");
ui->tabInputsSelect->setStyleSheet("QWidget { background: rgb(44,44,44); } "
"QToolButton::checked { background: rgb(128,70,0); } "
"QComboBox::item:selected { color: rgb(255,140,0); }");
connect(&m_inputMessageQueue, SIGNAL(messageEnqueued()), this, SLOT(handleMessages()), Qt::QueuedConnection);
@ -260,27 +264,25 @@ void MainWindow::removeChannelMarker(ChannelMarker* channelMarker)
m_deviceUIs.back()->m_spectrum->removeChannelMarker(channelMarker);
}
void MainWindow::setInputGUI(int deviceTabIndex, QWidget* gui)
void MainWindow::setInputGUI(int deviceTabIndex, QWidget* gui, const QString& sourceDisplayName)
{
qDebug("MainWindow::setInputGUI: count before %d", ui->tabInputsView->count());
char tabNameCStr[16];
sprintf(tabNameCStr, "R%d", deviceTabIndex);
if (deviceTabIndex < ui->tabInputsView->count())
{
qDebug("MainWindow::setInputGUI: device index %d replace", deviceTabIndex);
qDebug("MainWindow::setInputGUI: tab device index %d replace", deviceTabIndex);
ui->tabInputsView->removeTab(deviceTabIndex);
ui->tabInputsView->insertTab(deviceTabIndex, gui, tabNameCStr);
}
else
{
qDebug("MainWindow::setInputGUI: device index %d add", deviceTabIndex);
qDebug("MainWindow::setInputGUI: tab device index %d add", deviceTabIndex);
ui->tabInputsView->addTab(gui, tabNameCStr);
}
qDebug("MainWindow::setInputGUI: count after %d", ui->tabInputsView->count());
ui->tabInputsView->setTabToolTip(deviceTabIndex, sourceDisplayName);
}
void MainWindow::loadSettings()
@ -684,7 +686,7 @@ void MainWindow::on_action_About_triggered()
void MainWindow::on_action_addDevice_triggered()
{
// addDevice(); TODO: re-activate when plugin issues are solved
addDevice();
}
void MainWindow::on_action_removeDevice_triggered()

View File

@ -77,7 +77,7 @@ public:
void addChannelMarker(ChannelMarker* channelMarker); // TODO: review this
void removeChannelMarker(ChannelMarker* channelMarker); // TODO: review this
void setInputGUI(int deviceTabIndex, QWidget* gui);
void setInputGUI(int deviceTabIndex, QWidget* gui, const QString& sourceDisplayName);
const QTimer& getMasterTimer() const { return m_masterTimer; }
private:

View File

@ -410,7 +410,7 @@
<property name="minimumSize">
<size>
<width>0</width>
<height>80</height>
<height>110</height>
</size>
</property>
<property name="currentIndex">

View File

@ -19,9 +19,9 @@ MessageQueue* PluginAPI::getMainWindowMessageQueue()
return m_mainWindow->getInputMessageQueue();
}
void PluginAPI::setInputGUI(QWidget* inputGUI)
void PluginAPI::setInputGUI(QWidget* inputGUI, const QString& sourceDisplayName)
{
m_pluginManager->setInputGUI(inputGUI);
m_pluginManager->setInputGUI(inputGUI, sourceDisplayName);
}
void PluginAPI::registerChannel(const QString& channelName, PluginInterface* plugin)

View File

@ -5,8 +5,7 @@
#include "util/export.h"
#include "dsp/dspdeviceengine.h"
class QDockWidget;
class QAction;
class QString;
class PluginManager;
class PluginInterface;
@ -26,9 +25,8 @@ class SDRANGEL_API PluginAPI : public QObject {
public:
// MainWindow access
//QDockWidget* createMainWindowDock(Qt::DockWidgetArea dockWidgetArea, const QString& title);
MessageQueue* getMainWindowMessageQueue();
void setInputGUI(QWidget* inputGUI);
void setInputGUI(QWidget* inputGUI, const QString& sourceDisplayName);
// Channel stuff
void registerChannel(const QString& channelName, PluginInterface* plugin);

View File

@ -46,7 +46,7 @@ public:
virtual PluginGUI* createChannel(const QString& channelName) { return 0; }
virtual SampleSourceDevices enumSampleSources() { return SampleSourceDevices(); }
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId) { return 0; }
virtual PluginGUI* createSampleSourcePluginGUI(const QString& sourceId, const QString& sourceDisplayName) { return 0; }
};
Q_DECLARE_INTERFACE(PluginInterface, "SDRangel.PluginInterface/0.1");

View File

@ -1,6 +1,8 @@
#include <QApplication>
#include <QPluginLoader>
#include <QComboBox>
#include <cstdio>
#include "plugin/pluginmanager.h"
#include "plugin/plugingui.h"
#include "settings/preset.h"
@ -87,10 +89,10 @@ void PluginManager::registerSampleSource(const QString& sourceName, PluginInterf
m_sampleSourceRegistrations.append(SampleSourceRegistration(sourceName, plugin));
}
void PluginManager::setInputGUI(QWidget* gui)
void PluginManager::setInputGUI(QWidget* gui, const QString& sourceDisplayName)
{
//m_mainWindow->setInputGUI(gui);
m_mainWindow->setInputGUI(m_deviceTabIndex, gui);
m_mainWindow->setInputGUI(m_deviceTabIndex, gui, sourceDisplayName);
}
void PluginManager::addSink(SampleSink* sink)
@ -343,7 +345,7 @@ int PluginManager::selectSampleSourceByIndex(int index)
<< " ser: " << m_sampleSourceSerial.toStdString().c_str()
<< " seq: " << m_sampleSourceSequence;
m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId);
m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName);
m_dspDeviceEngine->setSourceSequence(m_sampleSourceSequence);
return index;
@ -397,7 +399,7 @@ int PluginManager::selectFirstSampleSource(const QString& sourceId)
<< " ser: " << m_sampleSourceSerial.toStdString().c_str()
<< " seq: " << m_sampleSourceSequence;
m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId);
m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName);
return index;
}
@ -464,7 +466,7 @@ int PluginManager::selectSampleSourceBySerialOrSequence(const QString& sourceId,
<< " ser: " << qPrintable(m_sampleSourceSerial)
<< " seq: " << m_sampleSourceSequence;
m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId);
m_sampleSourcePluginGUI = m_sampleSourceDevices[index].m_plugin->createSampleSourcePluginGUI(m_sampleSourceId, m_sampleSourceDevices[index].m_displayName);
return index;
}

View File

@ -52,7 +52,7 @@ public:
void removeChannelInstance(PluginGUI* pluginGUI);
void registerSampleSource(const QString& sourceName, PluginInterface* plugin);
void setInputGUI(QWidget* gui);
void setInputGUI(QWidget* gui, const QString& sourceDisplayName);
void addSink(SampleSink* sink);
void removeSink(SampleSink* sink);