From 4b388f02c36a4d59b90b48be26d9f1a271427859 Mon Sep 17 00:00:00 2001 From: f4exb Date: Tue, 23 Jun 2020 05:02:50 +0200 Subject: [PATCH] IQ swap: implementation in transverter dialog --- sdrgui/gui/transverterbutton.cpp | 6 ++++-- sdrgui/gui/transverterbutton.h | 15 +++++++++++++++ sdrgui/gui/transverterdialog.cpp | 27 +++++++++++++++++++++++++-- sdrgui/gui/transverterdialog.h | 5 ++++- sdrgui/gui/transverterdialog.ui | 29 ++++++++++++++++++++++++++++- 5 files changed, 76 insertions(+), 6 deletions(-) diff --git a/sdrgui/gui/transverterbutton.cpp b/sdrgui/gui/transverterbutton.cpp index f9df768a6..70ea5c833 100644 --- a/sdrgui/gui/transverterbutton.cpp +++ b/sdrgui/gui/transverterbutton.cpp @@ -25,7 +25,8 @@ TransverterButton::TransverterButton(QWidget* parent) : QPushButton(parent), m_deltaFrequency(0), - m_deltaFrequencyActive(false) + m_deltaFrequencyActive(false), + m_iqOrder(true) { setObjectName("TransverterButton"); connect(this, SIGNAL(clicked()), this, SLOT(onClicked())); @@ -33,7 +34,8 @@ TransverterButton::TransverterButton(QWidget* parent) : void TransverterButton::onClicked() { - TransverterDialog transverterDialog(m_deltaFrequency, m_deltaFrequencyActive, this); + TransverterDialog transverterDialog(m_deltaFrequency, m_deltaFrequencyActive, m_iqOrder, this); + transverterDialog.setIQSwapEnabled(m_iqOrderEnabled); transverterDialog.exec(); updateState(); } diff --git a/sdrgui/gui/transverterbutton.h b/sdrgui/gui/transverterbutton.h index 89c8cf901..e80cd419a 100644 --- a/sdrgui/gui/transverterbutton.h +++ b/sdrgui/gui/transverterbutton.h @@ -33,6 +33,7 @@ public: TransverterButton(QWidget* parent = 0); qint64 getDeltaFrequency() const { return m_deltaFrequency; } bool getDeltaFrequencyAcive() const { return m_deltaFrequencyActive; } + bool getIQOrder() const { return m_iqOrder; } void setDeltaFrequency(qint64 deltaFrequency) { @@ -46,12 +47,26 @@ public: updateState(); } + void setIQOrder(bool iqOrder) + { + m_iqOrder = iqOrder; + updateState(); + } + + void setIQOrderEnabled(bool enabled) + { + m_iqOrderEnabled = enabled; + updateState(); + } + private slots: void onClicked(); private: qint64 m_deltaFrequency; bool m_deltaFrequencyActive; + bool m_iqOrder; + bool m_iqOrderEnabled; void updateState(); }; diff --git a/sdrgui/gui/transverterdialog.cpp b/sdrgui/gui/transverterdialog.cpp index 71308d62e..9533ec7d9 100644 --- a/sdrgui/gui/transverterdialog.cpp +++ b/sdrgui/gui/transverterdialog.cpp @@ -19,23 +19,29 @@ // along with this program. If not, see . // /////////////////////////////////////////////////////////////////////////////////// +#include + #include "transverterdialog.h" #include "ui_transverterdialog.h" -TransverterDialog::TransverterDialog(qint64& deltaFrequency, bool& deltaFrequencyActive, QWidget* parent) : +TransverterDialog::TransverterDialog(qint64& deltaFrequency, bool& deltaFrequencyActive, bool& iqOrder, QWidget* parent) : QDialog(parent), ui(new Ui::TransverterDialog), m_deltaFrequency(deltaFrequency), - m_deltaFrequencyActive(deltaFrequencyActive) + m_deltaFrequencyActive(deltaFrequencyActive), + m_iqOrder(iqOrder) { + qDebug() << "TransverterDialog::TransverterDialog: " << m_iqOrder; ui->setupUi(this); ui->deltaFrequencyLabel->setText(QString("%1f").arg(QChar(0x94, 0x03))); ui->deltaFrequency->setColorMapper(ColorMapper(ColorMapper::GrayGold)); ui->deltaFrequency->setValueRange(false, 10, -9999999999L, 9999999999L); ui->deltaFrequency->setValue(m_deltaFrequency); ui->deltaFrequencyActive->setChecked(m_deltaFrequencyActive); + ui->iqOrder->setEnabled(true); + ui->iqOrder->setChecked(m_iqOrder); } TransverterDialog::~TransverterDialog() @@ -43,9 +49,26 @@ TransverterDialog::~TransverterDialog() delete ui; } +void TransverterDialog::setIQSwapEnabled(bool enabled) +{ + ui->iqOrder->setEnabled(enabled); + + if (enabled) { + ui->iqOrder->setChecked(m_iqOrder); + } else { + ui->iqOrder->setChecked(true); + } +} + void TransverterDialog::accept() { m_deltaFrequency = ui->deltaFrequency->getValueNew(); m_deltaFrequencyActive = ui->deltaFrequencyActive->isChecked(); + m_iqOrder = ui->iqOrder->isChecked(); QDialog::accept(); } + +void TransverterDialog::on_iqOrder_toggled(bool checked) +{ + ui->iqOrder->setText(checked ? "IQ" : "QI"); +} diff --git a/sdrgui/gui/transverterdialog.h b/sdrgui/gui/transverterdialog.h index 3d8739a71..f0b74a82a 100644 --- a/sdrgui/gui/transverterdialog.h +++ b/sdrgui/gui/transverterdialog.h @@ -34,16 +34,19 @@ class SDRGUI_API TransverterDialog : public QDialog { Q_OBJECT public: - explicit TransverterDialog(qint64& deltaFrequency, bool& deltaFrequencyActive, QWidget* parent = 0); + explicit TransverterDialog(qint64& deltaFrequency, bool& deltaFrequencyActive, bool& iqOrder, QWidget* parent = 0); ~TransverterDialog(); + void setIQSwapEnabled(bool enabled); private: Ui::TransverterDialog* ui; qint64& m_deltaFrequency; bool& m_deltaFrequencyActive; + bool& m_iqOrder; private slots: void accept(); + void on_iqOrder_toggled(bool checked); }; diff --git a/sdrgui/gui/transverterdialog.ui b/sdrgui/gui/transverterdialog.ui index 1d9850edd..13f948854 100644 --- a/sdrgui/gui/transverterdialog.ui +++ b/sdrgui/gui/transverterdialog.ui @@ -7,7 +7,7 @@ 0 0 324 - 81 + 114 @@ -100,6 +100,33 @@ + + + + + + IQ order: IQ: straight QI: swapped + + + IQ + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + +