mirror of
https://github.com/f4exb/sdrangel.git
synced 2026-06-05 15:34:57 -04:00
New channels dock with add channels button replaces add channel from sampling devices control. Implements #628
This commit is contained in:
+46
-23
@@ -211,6 +211,7 @@ MainWindow::MainWindow(qtwebapp::LoggerWithFile *logger, const MainParser& parse
|
||||
int deviceIndex = DeviceEnumerator::instance()->getRxSamplingDeviceIndex(m_settings.getSourceDeviceId(), m_settings.getSourceIndex());
|
||||
addSourceDevice(deviceIndex); // add the first device set with file input device as default if device in settings is not enumerated
|
||||
m_deviceUIs.back()->m_deviceAPI->setBuddyLeader(true); // the first device is always the leader
|
||||
tabChannelsIndexChanged(); // force channel selection list update
|
||||
|
||||
splash->showStatusMessage("load current preset settings...", Qt::white);
|
||||
qDebug() << "MainWindow::MainWindow: load current preset settings...";
|
||||
@@ -224,6 +225,8 @@ MainWindow::MainWindow(qtwebapp::LoggerWithFile *logger, const MainParser& parse
|
||||
|
||||
splash->showStatusMessage("finishing...", Qt::white);
|
||||
connect(ui->tabInputsView, SIGNAL(currentChanged(int)), this, SLOT(tabInputViewIndexChanged()));
|
||||
connect(ui->tabChannels, SIGNAL(currentChanged(int)), this, SLOT(tabChannelsIndexChanged()));
|
||||
connect(ui->channelDock, SIGNAL(addChannel(int)), this, SLOT(channelAddClicked(int)));
|
||||
|
||||
QString applicationDirPath = qApp->applicationDirPath();
|
||||
|
||||
@@ -314,11 +317,7 @@ void MainWindow::addSourceDevice(int deviceIndex)
|
||||
m_deviceUIs.back()->m_samplingDeviceControl->setPluginManager(m_pluginManager);
|
||||
QList<QString> channelNames;
|
||||
m_pluginManager->listRxChannels(channelNames);
|
||||
QStringList channelNamesList(channelNames);
|
||||
m_deviceUIs.back()->m_samplingDeviceControl->getChannelSelector()->addItems(channelNamesList);
|
||||
m_deviceUIs.back()->setNumberOfAvailableRxChannels(channelNamesList.size());
|
||||
|
||||
connect(m_deviceUIs.back()->m_samplingDeviceControl->getAddChannelButton(), SIGNAL(clicked(bool)), this, SLOT(channelAddClicked(bool)));
|
||||
m_deviceUIs.back()->setNumberOfAvailableRxChannels(channelNames.size());
|
||||
|
||||
dspDeviceSourceEngine->addSink(m_deviceUIs.back()->m_spectrumVis);
|
||||
ui->tabSpectra->addTab(m_deviceUIs.back()->m_spectrum, tabNameCStr);
|
||||
@@ -396,11 +395,7 @@ void MainWindow::addSinkDevice()
|
||||
m_deviceUIs.back()->m_samplingDeviceControl->setPluginManager(m_pluginManager);
|
||||
QList<QString> channelNames;
|
||||
m_pluginManager->listTxChannels(channelNames);
|
||||
QStringList channelNamesList(channelNames);
|
||||
m_deviceUIs.back()->m_samplingDeviceControl->getChannelSelector()->addItems(channelNamesList);
|
||||
m_deviceUIs.back()->setNumberOfAvailableTxChannels(channelNamesList.size());
|
||||
|
||||
connect(m_deviceUIs.back()->m_samplingDeviceControl->getAddChannelButton(), SIGNAL(clicked(bool)), this, SLOT(channelAddClicked(bool)));
|
||||
m_deviceUIs.back()->setNumberOfAvailableTxChannels(channelNames.size());
|
||||
|
||||
dspDeviceSinkEngine->addSpectrumSink(m_deviceUIs.back()->m_spectrumVis);
|
||||
m_deviceUIs.back()->m_spectrum->setDisplayedStream(false, 0);
|
||||
@@ -979,9 +974,7 @@ bool MainWindow::handleMessage(const Message& cmd)
|
||||
{
|
||||
MsgAddChannel& notif = (MsgAddChannel&) cmd;
|
||||
ui->tabInputsSelect->setCurrentIndex(notif.getDeviceSetIndex());
|
||||
DeviceUISet *deviceUI = m_deviceUIs[notif.getDeviceSetIndex()];
|
||||
deviceUI->m_samplingDeviceControl->getChannelSelector()->setCurrentIndex(notif.getChannelRegistrationIndex());
|
||||
channelAddClicked(true);
|
||||
channelAddClicked(notif.getChannelRegistrationIndex());
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -1903,9 +1896,8 @@ void MainWindow::sampleMIMOChanged()
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::channelAddClicked(bool checked)
|
||||
void MainWindow::channelAddClicked(int channelIndex)
|
||||
{
|
||||
(void) checked;
|
||||
// Do it in the currently selected source tab
|
||||
int currentSourceTabIndex = ui->tabInputsSelect->currentIndex();
|
||||
|
||||
@@ -1916,27 +1908,26 @@ void MainWindow::channelAddClicked(bool checked)
|
||||
if (deviceUI->m_deviceSourceEngine) // source device => Rx channels
|
||||
{
|
||||
m_pluginManager->createRxChannelInstance(
|
||||
deviceUI->m_samplingDeviceControl->getChannelSelector()->currentIndex(), deviceUI, deviceUI->m_deviceAPI);
|
||||
channelIndex, deviceUI, deviceUI->m_deviceAPI);
|
||||
}
|
||||
else if (deviceUI->m_deviceSinkEngine) // sink device => Tx channels
|
||||
{
|
||||
m_pluginManager->createTxChannelInstance(
|
||||
deviceUI->m_samplingDeviceControl->getChannelSelector()->currentIndex(), deviceUI, deviceUI->m_deviceAPI);
|
||||
channelIndex, deviceUI, deviceUI->m_deviceAPI);
|
||||
}
|
||||
else if (deviceUI->m_deviceMIMOEngine) // MIMO device => all possible channels. Depends on index range
|
||||
{
|
||||
int nbRxChannels = deviceUI->getNumberOfAvailableRxChannels();
|
||||
int nbTxChannels = deviceUI->getNumberOfAvailableTxChannels();
|
||||
int selectedIndex = deviceUI->m_samplingDeviceControl->getChannelSelector()->currentIndex();
|
||||
qDebug("MainWindow::channelAddClicked: MIMO: tab: %d nbRx: %d nbTx: %d selected: %d",
|
||||
currentSourceTabIndex, nbRxChannels, nbTxChannels, selectedIndex);
|
||||
currentSourceTabIndex, nbRxChannels, nbTxChannels, channelIndex);
|
||||
|
||||
if (selectedIndex < nbRxChannels) {
|
||||
if (channelIndex < nbRxChannels) {
|
||||
m_pluginManager->createRxChannelInstance(
|
||||
selectedIndex, deviceUI, deviceUI->m_deviceAPI);
|
||||
} else if (selectedIndex < nbRxChannels + nbTxChannels) {
|
||||
channelIndex, deviceUI, deviceUI->m_deviceAPI);
|
||||
} else if (channelIndex < nbRxChannels + nbTxChannels) {
|
||||
m_pluginManager->createTxChannelInstance(
|
||||
selectedIndex - nbRxChannels, deviceUI, deviceUI->m_deviceAPI);
|
||||
channelIndex - nbRxChannels, deviceUI, deviceUI->m_deviceAPI);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1990,6 +1981,38 @@ void MainWindow::tabInputViewIndexChanged()
|
||||
ui->tabSpectraGUI->setCurrentIndex(inputViewIndex);
|
||||
}
|
||||
|
||||
void MainWindow::tabChannelsIndexChanged()
|
||||
{
|
||||
int channelsTabIndex = ui->tabChannels->currentIndex();
|
||||
|
||||
if (channelsTabIndex >= 0)
|
||||
{
|
||||
DeviceUISet *deviceUI = m_deviceUIs[channelsTabIndex];
|
||||
QList<QString> channelNames;
|
||||
ui->channelDock->resetAvailableChannels();
|
||||
|
||||
if (deviceUI->m_deviceSourceEngine) // source device
|
||||
{
|
||||
m_pluginManager->listRxChannels(channelNames);
|
||||
ui->channelDock->addAvailableChannels(channelNames);
|
||||
}
|
||||
else if (deviceUI->m_deviceSinkEngine) // sink device
|
||||
{
|
||||
m_pluginManager->listTxChannels(channelNames);
|
||||
ui->channelDock->addAvailableChannels(channelNames);
|
||||
}
|
||||
else if (deviceUI->m_deviceMIMOEngine) // MIMO device
|
||||
{
|
||||
m_pluginManager->listMIMOChannels(channelNames);
|
||||
ui->channelDock->addAvailableChannels(channelNames);
|
||||
m_pluginManager->listRxChannels(channelNames);
|
||||
ui->channelDock->addAvailableChannels(channelNames);
|
||||
m_pluginManager->listTxChannels(channelNames);
|
||||
ui->channelDock->addAvailableChannels(channelNames);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::updateStatus()
|
||||
{
|
||||
m_dateTimeWidget->setText(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss t"));
|
||||
|
||||
Reference in New Issue
Block a user