mirror of
https://github.com/f4exb/sdrangel.git
synced 2025-05-30 22:02:26 -04:00
DSD demod GUI: prevent selection of negative AMBE feature index and disable AMBE checkbox if no AMBE features are available. Fixes #1334
This commit is contained in:
parent
b44eb18df6
commit
97ace89e19
@ -272,6 +272,10 @@ void DSDDemodGUI::on_symbolPLLLock_toggled(bool checked)
|
|||||||
|
|
||||||
void DSDDemodGUI::on_ambeSupport_clicked(bool checked)
|
void DSDDemodGUI::on_ambeSupport_clicked(bool checked)
|
||||||
{
|
{
|
||||||
|
if (ui->ambeFeatures->currentIndex() < 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
m_settings.m_connectAMBE = checked;
|
m_settings.m_connectAMBE = checked;
|
||||||
m_settings.m_ambeFeatureIndex = m_availableAMBEFeatures[ui->ambeFeatures->currentIndex()].m_featureIndex;
|
m_settings.m_ambeFeatureIndex = m_availableAMBEFeatures[ui->ambeFeatures->currentIndex()].m_featureIndex;
|
||||||
applySettings();
|
applySettings();
|
||||||
@ -427,6 +431,7 @@ DSDDemodGUI::DSDDemodGUI(PluginAPI* pluginAPI, DeviceUISet *deviceUISet, Baseban
|
|||||||
m_settings.setRollupState(&m_rollupState);
|
m_settings.setRollupState(&m_rollupState);
|
||||||
|
|
||||||
updateMyPosition();
|
updateMyPosition();
|
||||||
|
updateAMBEFeaturesList();
|
||||||
displaySettings();
|
displaySettings();
|
||||||
makeUIConnections();
|
makeUIConnections();
|
||||||
applySettings(true);
|
applySettings(true);
|
||||||
@ -510,19 +515,7 @@ void DSDDemodGUI::displaySettings()
|
|||||||
ui->traceDecayText->setText(QString("%1").arg(m_settings.m_traceDecay));
|
ui->traceDecayText->setText(QString("%1").arg(m_settings.m_traceDecay));
|
||||||
m_scopeVisXY->setDecay(m_settings.m_traceDecay);
|
m_scopeVisXY->setDecay(m_settings.m_traceDecay);
|
||||||
|
|
||||||
ui->ambeSupport->setChecked(m_settings.m_connectAMBE);
|
|
||||||
|
|
||||||
for (int i = 0; i < ui->ambeFeatures->count(); i++)
|
|
||||||
{
|
|
||||||
if (ui->ambeFeatures->itemData(i).toInt() == m_settings.m_ambeFeatureIndex)
|
|
||||||
{
|
|
||||||
ui->ambeFeatures->setCurrentIndex(i);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
updateIndexLabel();
|
updateIndexLabel();
|
||||||
|
|
||||||
getRollupContents()->restoreState(m_rollupState);
|
getRollupContents()->restoreState(m_rollupState);
|
||||||
updateAbsoluteCenterFrequency();
|
updateAbsoluteCenterFrequency();
|
||||||
blockApplySettings(false);
|
blockApplySettings(false);
|
||||||
@ -533,25 +526,40 @@ void DSDDemodGUI::updateAMBEFeaturesList()
|
|||||||
ui->ambeFeatures->blockSignals(true);
|
ui->ambeFeatures->blockSignals(true);
|
||||||
ui->ambeSupport->blockSignals(true);
|
ui->ambeSupport->blockSignals(true);
|
||||||
ui->ambeFeatures->clear();
|
ui->ambeFeatures->clear();
|
||||||
bool unsetAMBE = true;
|
ui->ambeSupport->setEnabled(m_availableAMBEFeatures.count() > 0);
|
||||||
|
int selectedFeatureIndex = -1;
|
||||||
|
bool unsetAMBE = false;
|
||||||
|
|
||||||
|
if (m_availableAMBEFeatures.count() == 0)
|
||||||
|
{
|
||||||
|
ui->ambeSupport->setChecked(false);
|
||||||
|
unsetAMBE = m_settings.m_connectAMBE;
|
||||||
|
m_settings.m_connectAMBE = false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ui->ambeSupport->setChecked(m_settings.m_connectAMBE);
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < m_availableAMBEFeatures.count(); i++)
|
for (int i = 0; i < m_availableAMBEFeatures.count(); i++)
|
||||||
{
|
{
|
||||||
ui->ambeFeatures->addItem(tr("F:%1").arg(m_availableAMBEFeatures[i].m_featureIndex), m_availableAMBEFeatures[i].m_featureIndex);
|
ui->ambeFeatures->addItem(tr("F:%1").arg(m_availableAMBEFeatures[i].m_featureIndex), m_availableAMBEFeatures[i].m_featureIndex);
|
||||||
|
|
||||||
if (m_settings.m_ambeFeatureIndex == m_availableAMBEFeatures[i].m_featureIndex)
|
if (m_availableAMBEFeatures[i].m_featureIndex == m_settings.m_ambeFeatureIndex) {
|
||||||
{
|
selectedFeatureIndex = i;
|
||||||
unsetAMBE = false;
|
|
||||||
ui->ambeFeatures->setCurrentIndex(i);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (unsetAMBE) {
|
if (selectedFeatureIndex > 0) {
|
||||||
ui->ambeSupport->setChecked(false);
|
ui->ambeFeatures->setCurrentIndex(selectedFeatureIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
ui->ambeSupport->blockSignals(false);
|
ui->ambeSupport->blockSignals(false);
|
||||||
ui->ambeFeatures->blockSignals(false);
|
ui->ambeFeatures->blockSignals(false);
|
||||||
|
|
||||||
|
if (unsetAMBE) {
|
||||||
|
applySettings();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void DSDDemodGUI::applySettings(bool force)
|
void DSDDemodGUI::applySettings(bool force)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user