Make controls work on sub/main rx

translations
Phil Taylor 2024-04-28 10:28:29 +01:00
rodzic bd15bdedca
commit ec0a15e4bd
2 zmienionych plików z 65 dodań i 44 usunięć

Wyświetl plik

@ -1026,7 +1026,6 @@ void wfmain::configureVFOs()
for(uchar i=0;i<rigCaps->numReceiver;i++) for(uchar i=0;i<rigCaps->numReceiver;i++)
{ {
spectrumScope* receiver = new spectrumScope(rigCaps->hasSpectrum,i,rigCaps->numVFO,this); spectrumScope* receiver = new spectrumScope(rigCaps->hasSpectrum,i,rigCaps->numVFO,this);
receiver->setUnderlayMode(prefs.underlayMode); receiver->setUnderlayMode(prefs.underlayMode);
receiver->wfAntiAliased(prefs.wfAntiAlias); receiver->wfAntiAliased(prefs.wfAntiAlias);
receiver->wfInterpolate(prefs.wfInterpolate); receiver->wfInterpolate(prefs.wfInterpolate);
@ -1045,6 +1044,9 @@ void wfmain::configureVFOs()
// Hide any secondary receivers until we need them! // Hide any secondary receivers until we need them!
if (i>0){ if (i>0){
receiver->setVisible(false); receiver->setVisible(false);
} else {
receiver->setVisible(true);
receiver->selected(true);
} }
connect(receiver, SIGNAL(frequencyRange(uchar, double, double)), cluster, SLOT(freqRange(uchar, double, double))); connect(receiver, SIGNAL(frequencyRange(uchar, double, double)), cluster, SLOT(freqRange(uchar, double, double)));
@ -3888,8 +3890,8 @@ void wfmain::changePrimaryMeter(bool transmitOn) {
newCmd = meter_tToMeterCommand(meterS); newCmd = meter_tToMeterCommand(meterS);
ui->meterSPoWidget->setMeterType(meterS); ui->meterSPoWidget->setMeterType(meterS);
} }
queue->del(oldCmd); queue->del(oldCmd,currentReceiver);
queue->add(priorityHighest,queueItem(newCmd,true)); queue->add(priorityHighest,queueItem(newCmd,true,currentReceiver));
} }
void wfmain::changeFullScreenMode(bool checked) void wfmain::changeFullScreenMode(bool checked)
@ -3990,24 +3992,18 @@ void wfmain::on_freqDial_valueChanged(int value)
// With the number of steps and direction of steps established, // With the number of steps and direction of steps established,
// we can now adjust the frequency: // we can now adjust the frequency:
for (uchar i=0;i<rigCaps->numReceiver;i++) f.Hz = roundFrequencyWithStep(receivers[currentReceiver]->getFrequency().Hz, delta, tsKnobHz);
f.MHzDouble = f.Hz / (double)1E6;
if (f.Hz > 0)
{ {
if (receivers[i]->isSelected()) oldFreqDialVal = value;
{ receivers[currentReceiver]->setFrequency(f);
f.Hz = roundFrequencyWithStep(receivers[i]->getFrequency().Hz, delta, tsKnobHz); queue->addUnique(priorityImmediate,queueItem((currentReceiver==0)?funcMainFreq:funcSubFreq,QVariant::fromValue<freqt>(f),false,currentReceiver));
f.MHzDouble = f.Hz / (double)1E6; } else {
if (f.Hz > 0) ui->freqDial->blockSignals(true);
{ ui->freqDial->setValue(oldFreqDialVal);
oldFreqDialVal = value; ui->freqDial->blockSignals(false);
receivers[i]->setFrequency(f); return;
queue->addUnique(priorityImmediate,queueItem((i==0)?funcMainFreq:funcSubFreq,QVariant::fromValue<freqt>(f),false,i));
} else {
ui->freqDial->blockSignals(true);
ui->freqDial->setValue(oldFreqDialVal);
ui->freqDial->blockSignals(false);
return;
}
}
} }
} }
@ -4473,10 +4469,10 @@ void wfmain::receiveTuningStep(unsigned char step)
void wfmain::receiveMeter(meter_t inMeter, unsigned char level,unsigned char receiver) void wfmain::receiveMeter(meter_t inMeter, unsigned char level,unsigned char receiver)
{ {
// Currently do nothing with meters from second VFO // Do nothing with s-meter from non-current receiver
if (receiver) if (receiver != currentReceiver && inMeter == meterS) {
return; return;
}
switch(inMeter) switch(inMeter)
{ {
// These first two meters, S and Power, // These first two meters, S and Power,
@ -4610,13 +4606,13 @@ void wfmain::on_rptSetupBtn_clicked()
void wfmain::on_attSelCombo_activated(int index) void wfmain::on_attSelCombo_activated(int index)
{ {
queue->add(priorityImmediate,queueItem(funcAttenuator,QVariant::fromValue<uchar>(ui->attSelCombo->itemData(index).toInt()),false)); queue->add(priorityImmediate,queueItem(funcAttenuator,QVariant::fromValue<uchar>(ui->attSelCombo->itemData(index).toInt()),false,currentReceiver));
queue->add(priorityHigh,funcPreamp,false); queue->add(priorityHigh,funcPreamp,false);
} }
void wfmain::on_preampSelCombo_activated(int index) void wfmain::on_preampSelCombo_activated(int index)
{ {
queue->add(priorityImmediate,queueItem(funcPreamp,QVariant::fromValue<uchar>(ui->preampSelCombo->itemData(index).toInt()),false)); queue->add(priorityImmediate,queueItem(funcPreamp,QVariant::fromValue<uchar>(ui->preampSelCombo->itemData(index).toInt()),false,currentReceiver));
queue->add(priorityHigh,funcAttenuator,false); queue->add(priorityHigh,funcAttenuator,false);
} }
@ -4625,7 +4621,7 @@ void wfmain::on_antennaSelCombo_activated(int index)
antennaInfo ant; antennaInfo ant;
ant.antenna = (unsigned char)ui->antennaSelCombo->itemData(index).toInt(); ant.antenna = (unsigned char)ui->antennaSelCombo->itemData(index).toInt();
ant.rx = ui->rxAntennaCheck->isChecked(); ant.rx = ui->rxAntennaCheck->isChecked();
queue->add(priorityImmediate,queueItem(funcAntenna,QVariant::fromValue<antennaInfo>(ant),false)); queue->add(priorityImmediate,queueItem(funcAntenna,QVariant::fromValue<antennaInfo>(ant),false,currentReceiver));
} }
void wfmain::on_rxAntennaCheck_clicked(bool value) void wfmain::on_rxAntennaCheck_clicked(bool value)
@ -4633,26 +4629,26 @@ void wfmain::on_rxAntennaCheck_clicked(bool value)
antennaInfo ant; antennaInfo ant;
ant.antenna = (unsigned char)ui->antennaSelCombo->currentData().toInt(); ant.antenna = (unsigned char)ui->antennaSelCombo->currentData().toInt();
ant.rx = value; ant.rx = value;
queue->add(priorityImmediate,queueItem(funcAntenna,QVariant::fromValue<antennaInfo>(ant),false)); queue->add(priorityImmediate,queueItem(funcAntenna,QVariant::fromValue<antennaInfo>(ant),false,currentReceiver));
} }
void wfmain::receivePreamp(unsigned char pre, uchar receiver) void wfmain::receivePreamp(unsigned char pre, uchar receiver)
{ {
if (!receiver) { if (receiver == currentReceiver) {
ui->preampSelCombo->setCurrentIndex(ui->preampSelCombo->findData(pre)); ui->preampSelCombo->setCurrentIndex(ui->preampSelCombo->findData(pre));
} }
} }
void wfmain::receiveAttenuator(unsigned char att, uchar receiver) void wfmain::receiveAttenuator(unsigned char att, uchar receiver)
{ {
if (!receiver) { if (receiver == currentReceiver) {
ui->attSelCombo->setCurrentIndex(ui->attSelCombo->findData(att)); ui->attSelCombo->setCurrentIndex(ui->attSelCombo->findData(att));
} }
} }
void wfmain::receiveAntennaSel(unsigned char ant, bool rx, uchar receiver) void wfmain::receiveAntennaSel(unsigned char ant, bool rx, uchar receiver)
{ {
if (!receiver) { if (receiver == currentReceiver) {
ui->antennaSelCombo->setCurrentIndex(ant); ui->antennaSelCombo->setCurrentIndex(ant);
ui->rxAntennaCheck->setChecked(rx); ui->rxAntennaCheck->setChecked(rx);
} }
@ -5221,12 +5217,7 @@ void wfmain::receiveValue(cacheItem val){
case funcFreqGet: case funcFreqGet:
case funcFreqTR: case funcFreqTR:
// If current receiver (0) isn't selected, then send this to other VFO // If current receiver (0) isn't selected, then send this to other VFO
if (receivers.size()>1) { receivers[currentReceiver]->setFrequency(val.value.value<freqt>(),vfo);
if (!receivers[val.receiver]->isSelected()){
val.receiver=!bool(val.receiver);
}
}
receivers[val.receiver]->setFrequency(val.value.value<freqt>(),vfo);
break; break;
#if defined __GNUC__ #if defined __GNUC__
@ -5278,11 +5269,7 @@ void wfmain::receiveValue(cacheItem val){
case funcModeGet: case funcModeGet:
case funcModeTR: case funcModeTR:
// If current VFO (0) isn't selected, then send this to other VFO // If current VFO (0) isn't selected, then send this to other VFO
if (receivers.size()>1) { val.receiver = currentReceiver;
if (!receivers[val.receiver]->isSelected()){
val.receiver=!bool(val.receiver);
}
}
case funcSelectedMode: case funcSelectedMode:
case funcMainMode: case funcMainMode:
receivers[val.receiver]->receiveMode(val.value.value<modeInfo>(),vfo); receivers[val.receiver]->receiveMode(val.value.value<modeInfo>(),vfo);
@ -5614,7 +5601,24 @@ void wfmain::receiveValue(cacheItem val){
qCritical(logSystem()) << "Thread is NOT the main UI thread, cannot hide/unhide VFO"; qCritical(logSystem()) << "Thread is NOT the main UI thread, cannot hide/unhide VFO";
} else { } else {
subScope = val.value.value<bool>(); currentReceiver = val.value.value<uchar>();
for (uchar rx=0;rx<receivers.size();rx++) {
//if (!receivers[rx]->isVisible() && (rx == currentReceiver || ui->scopeDualBtn->isChecked())) {
// receivers[rx]->setVisible(true);
//} else if (rx != currentReceiver && !ui->scopeDualBtn->isChecked() && receivers[rx]->isVisible()) {
// receivers[rx]->setVisible(false);
//}
if (rx == currentReceiver && !receivers[rx]->isSelected()) {
receivers[rx]->selected(true);
} else if (rx != currentReceiver && receivers[rx]->isSelected()) {
receivers[rx]->selected(false);
}
}
/*
// This tells us whether we are receiving main or sub data // This tells us whether we are receiving main or sub data
if (!subScope && !receivers[0]->isVisible()) { if (!subScope && !receivers[0]->isVisible()) {
receivers[1]->setVisible(false); receivers[1]->setVisible(false);
@ -5627,10 +5631,13 @@ void wfmain::receiveValue(cacheItem val){
if (ui->scopeDualBtn->isChecked()) { if (ui->scopeDualBtn->isChecked()) {
receivers[0]->selected(!subScope); receivers[0]->selected(!subScope);
receivers[1]->selected(subScope); receivers[1]->selected(subScope);
} else { } else {
receivers[0]->selected(true); receivers[0]->selected(true);
receivers[1]->selected(false); receivers[1]->selected(false);
currentReceiver = 0;
} }
*/
} }
} }
break; break;
@ -5645,6 +5652,14 @@ void wfmain::receiveValue(cacheItem val){
} else { } else {
// This tells us whether we are receiving single or dual scopes // This tells us whether we are receiving single or dual scopes
ui->scopeDualBtn->setChecked(val.value.value<bool>()); ui->scopeDualBtn->setChecked(val.value.value<bool>());
for (uchar rx=0;rx<receivers.size();rx++) {
if (!receivers[rx]->isVisible() && (rx == currentReceiver || val.value.value<bool>())) {
receivers[rx]->setVisible(true);
} else if (rx != currentReceiver && !val.value.value<bool>() && receivers[rx]->isVisible()) {
receivers[rx]->setVisible(false);
}
}
/*
if (val.value.value<bool>()) { if (val.value.value<bool>()) {
if (!receivers[1]->isVisible()) if (!receivers[1]->isVisible())
{ {
@ -5664,6 +5679,7 @@ void wfmain::receiveValue(cacheItem val){
receivers[0]->setVisible(false); receivers[0]->setVisible(false);
} }
} }
*/
} }
} }
break; break;
@ -5750,8 +5766,12 @@ void wfmain::on_showSettingsBtn_clicked()
void wfmain::on_scopeMainSubBtn_clicked() void wfmain::on_scopeMainSubBtn_clicked()
{ {
subScope = !subScope; if (currentReceiver<receivers.size()-1){
queue->add(priorityImmediate,queueItem(funcScopeMainSub,QVariant::fromValue(subScope),false)); currentReceiver++;
} else {
currentReceiver = 0;
}
queue->add(priorityImmediate,queueItem(funcScopeMainSub,QVariant::fromValue(currentReceiver),false));
} }
void wfmain::on_scopeDualBtn_toggled(bool en) void wfmain::on_scopeDualBtn_toggled(bool en)

Wyświetl plik

@ -821,6 +821,7 @@ private:
audioDevices* audioDev = Q_NULLPTR; audioDevices* audioDev = Q_NULLPTR;
QImage lcdImage; QImage lcdImage;
connectionStatus_t connStatus = connDisconnected; connectionStatus_t connStatus = connDisconnected;
uchar currentReceiver = 0;
}; };