/** * @brief Mode selector activated. * @param New mode selection. * * This slot is activated when the user selects a new demodulator (mode change). * It is connected automatically by the UI constructor, and it emits the demodSelected() * signal. * * Note that the modes listed in the selector are different from those defined by * receiver::demod (we want to list LSB/USB separately but they have identical demods). */ void DockRxOpt::on_modeSelector_activated(int index) { qDebug() << "New mode: " << index; if (index == MODE_RAW) { qDebug() << "Raw I/Q not implemented (fallback to FM-N)"; ui->modeSelector->setCurrentIndex(MODE_NFM); emit demodSelected(MODE_NFM); return; } updateDemodOptPage(index); emit demodSelected(index); }
/** Read receiver configuration from settings data. */ void DockRxOpt::readSettings(QSettings *settings) { bool conv_ok; int intVal; intVal = settings->value("receiver/demod", 0).toInt(&conv_ok); if (intVal >= 0) { setCurrentDemod(intVal); emit demodSelected(intVal); } intVal = settings->value("receiver/cwoffset", 700).toInt(&conv_ok); if (conv_ok) { demodOpt->setCwOffset(intVal); demodOpt_cwOffsetChanged(intVal); } qint64 offs = settings->value("receiver/offset", 0).toInt(&conv_ok); if (offs) { setFilterOffset(offs); emit filterOffsetChanged(offs); } double dblVal = settings->value("receiver/sql_level", 1.0).toDouble(&conv_ok); if (conv_ok && dblVal < 1.0) { //ui->sqlSlider->setValue(intVal); // signal emitted automatically ui->sqlSpinBox->setValue(dblVal); } }
/*! \brief New filter preset selected. * * Instead of implementing a new signal, we simply emit demodSelected() since demodulator * and filter preset are tightly coupled. */ void DockRxOpt::on_filterCombo_activated(int index) { Q_UNUSED(index); qDebug() << "New filter preset:" << ui->filterCombo->currentText(); emit demodSelected(ui->modeSelector->currentIndex()); }
/*! \brief Mode selector activated. * \param New mode selection. * * This slot is activated when the user selects a new demodulator (mode change). * It is connected automatically by the UI constructor, and it emits the demodSelected() * signal. * * Note that the modes listed in the selector are different from those defined by * receiver::demod (we want to list LSB/USB separately but they have identical demods). */ void DockRxOpt::on_modeSelector_activated(int index) { qDebug() << "New mode: " << index; if (index == MODE_RAW) { qDebug() << "Raw I/Q not implemented (fallback to FM-N)"; ui->modeSelector->setCurrentIndex(MODE_NFM); emit demodSelected(MODE_NFM); return; } // update demodulator option widget if (index == MODE_NFM) demodOpt->setCurrentPage(CDemodOptions::PAGE_FM_OPT); else if (index == MODE_AM) demodOpt->setCurrentPage(CDemodOptions::PAGE_AM_OPT); else demodOpt->setCurrentPage(CDemodOptions::PAGE_NO_OPT); emit demodSelected(index); }
/** * @brief Mode selector activated. * @param New mode selection. * * This slot is activated when the user selects a new demodulator (mode change). * It is connected automatically by the UI constructor, and it emits the demodSelected() * signal. * * Note that the modes listed in the selector are different from those defined by * receiver::demod (we want to list LSB/USB separately but they have identical demods). */ void DockRxOpt::on_modeSelector_activated(int index) { updateDemodOptPage(index); emit demodSelected(index); }
/** Read receiver configuration from settings data. */ void DockRxOpt::readSettings(QSettings *settings) { bool conv_ok; int int_val; double dbl_val; bool bool_val = settings->value("gui/fctl_reset_digits", true).toBool(); ui->filterFreq->setResetLowerDigits(bool_val); int_val = settings->value("receiver/cwoffset", 700).toInt(&conv_ok); if (conv_ok) demodOpt->setCwOffset(int_val); int_val = settings->value("receiver/fm_maxdev", 2500).toInt(&conv_ok); if (conv_ok) demodOpt->setMaxDev(int_val); dbl_val = settings->value("receiver/fm_deemph", 75).toDouble(&conv_ok); if (conv_ok && dbl_val >= 0) demodOpt->setEmph(1.0e-6 * dbl_val); // was stored as usec qint64 offs = settings->value("receiver/offset", 0).toInt(&conv_ok); if (offs) { setFilterOffset(offs); emit filterOffsetChanged(offs); } dbl_val = settings->value("receiver/sql_level", 1.0).toDouble(&conv_ok); if (conv_ok && dbl_val < 1.0) ui->sqlSpinBox->setValue(dbl_val); // AGC settings int_val = settings->value("receiver/agc_threshold", -100).toInt(&conv_ok); if (conv_ok) agcOpt->setThreshold(int_val); int_val = settings->value("receiver/agc_decay", 500).toInt(&conv_ok); if (conv_ok) { agcOpt->setDecay(int_val); if (int_val == 100) ui->agcPresetCombo->setCurrentIndex(0); else if (int_val == 500) ui->agcPresetCombo->setCurrentIndex(1); else if (int_val == 2000) ui->agcPresetCombo->setCurrentIndex(2); else ui->agcPresetCombo->setCurrentIndex(3); } int_val = settings->value("receiver/agc_slope", 0).toInt(&conv_ok); if (conv_ok) agcOpt->setSlope(int_val); int_val = settings->value("receiver/agc_gain", 0).toInt(&conv_ok); if (conv_ok) agcOpt->setGain(int_val); agcOpt->setHang(settings->value("receiver/agc_usehang", false).toBool()); if (settings->value("receiver/agc_off", false).toBool()) ui->agcPresetCombo->setCurrentIndex(4); int_val = settings->value("receiver/demod", 0).toInt(&conv_ok); if (int_val >= 0) { setCurrentDemod(int_val); emit demodSelected(int_val); } }