Merge branch 'creator-widgets' of https://gitlab.com/eliggett/wfview into creator-widgets

creator-widgets
Phil Taylor 2024-02-11 09:29:41 +00:00
commit 1c6db285e0
5 zmienionych plików z 76 dodań i 43 usunięć

Wyświetl plik

@ -536,8 +536,29 @@ void freqCtrl::wheelEvent(QWheelEvent *event)
QPointF pt = event->position();
#endif
int delta = m_InvertScrolling ? -event->angleDelta().y() : event->angleDelta().y();
int numDegrees = delta / 8;
int numSteps = numDegrees / 15;
qreal numDegrees = delta / 8;
qreal offset = numDegrees / 15;
qreal stepsToScroll = QApplication::wheelScrollLines() * offset;
if( (scrollWheelOffsetAccumulated > 0) && (offset > 0) ) {
scrollWheelOffsetAccumulated += stepsToScroll;
} else if ((scrollWheelOffsetAccumulated < 0) && (offset < 0)) {
scrollWheelOffsetAccumulated += stepsToScroll;
} else {
// Changed direction, zap the old accumulation:
scrollWheelOffsetAccumulated = stepsToScroll;
//qInfo() << "Scroll changed direction";
}
int numSteps = int(scrollWheelOffsetAccumulated);
if(!numSteps) {
// we have not accumulated enough for a complete step.
// come back later.
return;
}
for (int i = m_DigStart; i < m_NumDigits; i++)
{
@ -549,6 +570,7 @@ void freqCtrl::wheelEvent(QWheelEvent *event)
decFreq();
}
}
scrollWheelOffsetAccumulated = 0;
}
void freqCtrl::keyPressEvent(QKeyEvent *event)

Wyświetl plik

@ -9,6 +9,7 @@
#include <QFrame>
#include <QImage>
#include <QtGui>
#include <QApplication>
enum FctlUnit {
FCTL_UNIT_NONE, // Freq displayed without unit: 14.236.000
@ -110,6 +111,10 @@ private:
int m_DecPos;
int m_NumSeps;
int scrollYperClick = 24;
int scrollXperClick = 24;
qreal scrollWheelOffsetAccumulated=0;
qint64 m_MinStep;
qint64 m_freq;
qint64 m_Oldfreq;

Wyświetl plik

@ -63,9 +63,9 @@ meter::meter(QWidget *parent) : QWidget(parent)
connect(combo, SIGNAL(activated(int)), this, SLOT(acceptComboItem(int)));
//connect(combo, SIGNAL(currentIndexChanged(int)), this, SLOT(acceptComboItem(int)));
this->setToolTip("");
combo->hide();
this->installEventFilter(this);
}
void meter::setCompReverse(bool reverse) {
@ -125,12 +125,23 @@ void meter::clearMeter()
update();
}
void meter::setMeterType(meter_t type)
void meter::setMeterType(meter_t m_type_req)
{
if(type == meterType)
if(m_type_req == meterType)
return;
meterType = type;
if( (m_type_req == meterS) || (m_type_req == meterPower) ) {
this->setToolTip("");
} else {
this->setToolTip("Double-click to select meter type.");
}
int m_index = combo->findData(m_type_req);
combo->blockSignals(true);
combo->setCurrentIndex(m_index);
combo->blockSignals(false);
meterType = m_type_req;
// clear average and peak vectors:
this->clearMeter();
}
@ -179,13 +190,26 @@ void meter::handleDoubleClick() {
}
bool meter::eventFilter(QObject *object, QEvent *event) {
if( (freezeDrawing) && (event->type() == QEvent::MouseButtonPress) ) {
combo->hide();
freezeDrawing = false;
return true;
}
if( (freezeDrawing) && (event->type() == QEvent::MouseButtonDblClick) ) {
combo->hide();
freezeDrawing = false;
return true;
}
if(event->type() == QEvent::MouseButtonDblClick) {
qDebug() << "Mouse double click event in meter widget";
if( !(meterType == meterS || meterType == meterPower)) {
handleDoubleClick();
}
return true;
}
(void)object;
return false;
}
@ -253,6 +277,8 @@ void meter::paintEvent(QPaintEvent *)
}
break;
case meterNone:
label = "Double-click to set meter";
drawLabel(&painter);
return;
break;
case meterAudio:

Wyświetl plik

@ -714,29 +714,6 @@ void wfmain::receiveStatusUpdate(networkStatus status)
void wfmain::receiveNetworkAudioLevels(networkAudioLevels l)
{
/*
meter_t m2mtr = ui->meter2Widget->getMeterType();
if(m2mtr == meterAudio)
{
if(amTransmitting)
{
if(l.haveTxLevels)
ui->meter2Widget->setLevels(l.txAudioRMS, l.txAudioPeak);
} else {
if(l.haveRxLevels)
ui->meter2Widget->setLevels(l.rxAudioRMS, l.rxAudioPeak);
}
} else if (m2mtr == meterTxMod) {
if(l.haveTxLevels)
ui->meter2Widget->setLevels(l.txAudioRMS, l.txAudioPeak);
} else if (m2mtr == meterRxAudio) {
if(l.haveRxLevels)
ui->meter2Widget->setLevels(l.rxAudioRMS, l.rxAudioPeak);
}
*/
meter_t m = meterNone;
if(l.haveRxLevels)
{
@ -748,19 +725,10 @@ void wfmain::receiveNetworkAudioLevels(networkAudioLevels l)
m = meterTxMod;
receiveMeter(m, l.txAudioPeak);
}
}
void wfmain::setupMainUI()
{
ui->meter2Widget->hide();
ui->meter3Widget->hide();
// Future ideas:
//ui->meter2selectionCombo->addItem("Transmit Audio", meterTxMod);
//ui->meter2selectionCombo->addItem("Receive Audio", meterRxAudio);
//ui->meter2selectionCombo->addItem("Latency", meterLatency);
// Set scroll wheel response (tick interval)
// and set arrow key response (single step)
ui->rfGainSlider->setTickInterval(100);
@ -3941,8 +3909,13 @@ void wfmain::receiveRigID(rigCapabilities rigCaps)
// Set the second meter here as I suspect we need to be connected for it to work?
changeMeterType(prefs.meter2Type, 2);
changeMeterType(prefs.meter3Type, 3);
ui->meter2Widget->blockMeterType(prefs.meter3Type);
ui->meter3Widget->blockMeterType(prefs.meter2Type);
ui->meter2Widget->setCompReverse(prefs.compMeterReverse);
ui->meter3Widget->setCompReverse(prefs.compMeterReverse);
// for (int i = 0; i < ui->meter2selectionCombo->count(); i++)
// {
// if (static_cast<meter_t>(ui->meter2selectionCombo->itemData(i).toInt()) == prefs.meter2Type)
@ -4318,13 +4291,16 @@ void wfmain::on_tuneNowBtn_clicked()
{
queue->addUnique(priorityImmediate,queueItem(funcTunerStatus,QVariant::fromValue<uchar>(2U)));
showStatusBarText("Starting ATU tuning cycle...");
ATUCheckTimer.setSingleShot(true);
ATUCheckTimer.start(5000);
}
void wfmain::on_tuneEnableChk_clicked(bool checked)
{
queue->addUnique(priorityImmediate,queueItem(funcTunerStatus,QVariant::fromValue<uchar>(checked)));
showStatusBarText(QString("Turning %0 ATU").arg(checked?"on":"off"));
ATUCheckTimer.setSingleShot(true);
ATUCheckTimer.start(5000);
}
bool wfmain::on_exitBtn_clicked()
@ -4404,20 +4380,24 @@ void wfmain::receiveATUStatus(unsigned char atustatus)
ui->tuneEnableChk->blockSignals(true);
ui->tuneEnableChk->setChecked(false);
ui->tuneEnableChk->blockSignals(false);
showStatusBarText("ATU not enabled.");
if(ATUCheckTimer.isActive())
showStatusBarText("ATU not enabled.");
break;
case 0x01:
// ATU enabled
ui->tuneEnableChk->blockSignals(true);
ui->tuneEnableChk->setChecked(true);
ui->tuneEnableChk->blockSignals(false);
showStatusBarText("ATU enabled.");
if(ATUCheckTimer.isActive())
showStatusBarText("ATU enabled.");
break;
case 0x02:
// ATU tuning in-progress.
// Add command queue to check again and update status bar
// qInfo(logSystem()) << "Received ATU status update that *tuning* is taking place";
showStatusBarText("ATU is Tuning...");
ATUCheckTimer.stop();
ATUCheckTimer.start(5000);
queue->add(priorityHighest,funcTunerStatus);
break;
default:
@ -5078,7 +5058,6 @@ void wfmain::changeMeterType(meter_t m, int meterNum)
if(newMeterType==meterNone)
{
uiMeter->hide();
uiMeter->setMeterType(newMeterType);
} else {
uiMeter->show();

Wyświetl plik

@ -513,6 +513,7 @@ private:
void initLogging();
QTimer logCheckingTimer;
int logCheckingOldPosition = 0;
QTimer ATUCheckTimer;
QCustomPlot *plot; // line plot
QCustomPlot *wf; // waterfall image