kopia lustrzana https://gitlab.com/eliggett/wfview
Lots of pref loading code. Added Settings button!
rodzic
c8dc776dc5
commit
b7cd2c432a
71
prefs.h
71
prefs.h
|
@ -5,6 +5,74 @@
|
|||
|
||||
#include "wfviewtypes.h"
|
||||
|
||||
enum prefIfItem {
|
||||
if_useFullScreen = 1 << 0,
|
||||
if_useSystemTheme = 1 << 1,
|
||||
if_drawPeaks = 1 << 2,
|
||||
if_underlayMode = 1 << 3,
|
||||
if_underlayBufferSize = 1 << 4,
|
||||
if_wfAntiAlias = 1 << 5,
|
||||
if_wfInterpolate = 1 << 6,
|
||||
if_wftheme = 1 << 7,
|
||||
if_plotFloor = 1 << 8,
|
||||
if_plotCeiling = 1 << 9,
|
||||
if_stylesheetPath = 1 << 10,
|
||||
if_wflength = 1 << 11,
|
||||
if_confirmExit = 1 << 12,
|
||||
if_confirmPowerOff = 1 << 13,
|
||||
if_meterKind = 1 << 14,
|
||||
if_clickDragTuningEnable = 1 << 15,
|
||||
if_currentColorPresetNumber = 1 << 16,
|
||||
if_all = 1 << 17
|
||||
};
|
||||
|
||||
enum prefRaItem {
|
||||
|
||||
ra_radioCIVAddr = 1 << 0,
|
||||
ra_CIVisRadioModel = 1 << 1,
|
||||
ra_forceRTSasPTT = 1 << 2,
|
||||
ra_polling_ms = 1 << 3,
|
||||
ra_serialPortRadio = 1 << 4,
|
||||
ra_serialPortBaud = 1 << 5,
|
||||
ra_virtualSerialPort = 1 << 6,
|
||||
ra_localAFgain = 1 << 7,
|
||||
ra_audioSystem = 1 << 8,
|
||||
ra_all = 1 << 9
|
||||
};
|
||||
|
||||
enum prefCtItem {
|
||||
ct_enablePTT = 1 << 0,
|
||||
ct_niceTS = 1 << 1,
|
||||
ct_automaticSidebandSwitching = 1 << 2,
|
||||
ct_enableUSBControllers = 1 << 3,
|
||||
ct_usbSensitivity = 1 << 4,
|
||||
ct_all = 1 << 5
|
||||
};
|
||||
|
||||
enum prefLanItem {
|
||||
|
||||
l_enableLAN = 1 << 1,
|
||||
l_enableRigCtlD = 1 << 2,
|
||||
l_rigCtlPort = 1 << 3,
|
||||
l_tcpPort = 1 << 4,
|
||||
l_waterfallFormat = 1 << 5,
|
||||
l_all = 1 << 6
|
||||
};
|
||||
|
||||
enum prefClusterItem {
|
||||
cl_clusterUdpEnable = 1 << 1,
|
||||
cl_clusterTcpEnable = 1 << 2,
|
||||
cl_clusterUdpPort = 1 << 3,
|
||||
cl_clusterTcpServerName = 1 << 4,
|
||||
cl_clusterTcpUserName = 1 << 5,
|
||||
cl_clusterTcpPassword = 1 << 6,
|
||||
cl_clusterTimeout = 1 << 7,
|
||||
cl_clusterSkimmerSpotsEnable = 1 << 8,
|
||||
cl_all = 1 << 9
|
||||
};
|
||||
|
||||
|
||||
|
||||
struct preferences {
|
||||
// Program:
|
||||
QString version;
|
||||
|
@ -29,6 +97,8 @@ struct preferences {
|
|||
bool confirmPowerOff;
|
||||
meterKind meter2Type;
|
||||
bool clickDragTuningEnable;
|
||||
int currentColorPresetNumber = 0;
|
||||
|
||||
|
||||
// Radio:
|
||||
unsigned char radioCIVAddr;
|
||||
|
@ -52,7 +122,6 @@ struct preferences {
|
|||
bool enableLAN;
|
||||
bool enableRigCtlD;
|
||||
quint16 rigCtlPort;
|
||||
int currentColorPresetNumber = 0;
|
||||
quint16 tcpPort;
|
||||
quint8 waterfallFormat;
|
||||
|
||||
|
|
|
@ -0,0 +1,614 @@
|
|||
#include "settingswidget.h"
|
||||
#include "ui_settingswidget.h"
|
||||
|
||||
#define setchk(a,b) quietlyUpdateCheckbox(a,b)
|
||||
|
||||
settingswidget::settingswidget(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::settingswidget)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
createSettingsListItems();
|
||||
populateComboBoxes();
|
||||
}
|
||||
|
||||
settingswidget::~settingswidget()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
void settingswidget::createSettingsListItems()
|
||||
{
|
||||
// Add items to the settings tab list widget
|
||||
ui->settingsList->addItem("Radio Access"); // 0
|
||||
ui->settingsList->addItem("User Interface"); // 1
|
||||
ui->settingsList->addItem("Radio Settings"); // 2
|
||||
ui->settingsList->addItem("Radio Server"); // 3
|
||||
ui->settingsList->addItem("External Control"); // 4
|
||||
ui->settingsList->addItem("DX Cluster"); // 5
|
||||
ui->settingsList->addItem("Experimental"); // 6
|
||||
//ui->settingsList->addItem("Audio Processing"); // 7
|
||||
ui->settingsStack->setCurrentIndex(0);
|
||||
}
|
||||
|
||||
void settingswidget::populateComboBoxes()
|
||||
{
|
||||
|
||||
ui->baudRateCombo->insertItem(0, QString("115200"), 115200);
|
||||
ui->baudRateCombo->insertItem(1, QString("57600"), 57600);
|
||||
ui->baudRateCombo->insertItem(2, QString("38400"), 38400);
|
||||
ui->baudRateCombo->insertItem(3, QString("28800"), 28800);
|
||||
ui->baudRateCombo->insertItem(4, QString("19200"), 19200);
|
||||
ui->baudRateCombo->insertItem(5, QString("9600"), 9600);
|
||||
ui->baudRateCombo->insertItem(6, QString("4800"), 4800);
|
||||
ui->baudRateCombo->insertItem(7, QString("2400"), 2400);
|
||||
ui->baudRateCombo->insertItem(8, QString("1200"), 1200);
|
||||
ui->baudRateCombo->insertItem(9, QString("300"), 300);
|
||||
|
||||
ui->meter2selectionCombo->addItem("None", meterNone);
|
||||
ui->meter2selectionCombo->addItem("SWR", meterSWR);
|
||||
ui->meter2selectionCombo->addItem("ALC", meterALC);
|
||||
ui->meter2selectionCombo->addItem("Compression", meterComp);
|
||||
ui->meter2selectionCombo->addItem("Voltage", meterVoltage);
|
||||
ui->meter2selectionCombo->addItem("Current", meterCurrent);
|
||||
ui->meter2selectionCombo->addItem("Center", meterCenter);
|
||||
ui->meter2selectionCombo->addItem("TxRxAudio", meterAudio);
|
||||
ui->meter2selectionCombo->addItem("RxAudio", meterRxAudio);
|
||||
ui->meter2selectionCombo->addItem("TxAudio", meterTxMod);
|
||||
|
||||
|
||||
ui->meter2selectionCombo->show();
|
||||
// prefs not valid yet ui->meter2selectionCombo->setCurrentIndex((int)prefs.meter2Type);
|
||||
|
||||
ui->secondaryMeterSelectionLabel->show();
|
||||
|
||||
|
||||
|
||||
|
||||
ui->controlPortTxt->setValidator(new QIntValidator(this));
|
||||
}
|
||||
|
||||
void settingswidget::on_settingsList_currentRowChanged(int currentRow)
|
||||
{
|
||||
ui->settingsStack->setCurrentIndex(currentRow);
|
||||
}
|
||||
|
||||
void settingswidget::acceptPreferencesPtr(preferences *pptr)
|
||||
{
|
||||
if(pptr != NULL)
|
||||
{
|
||||
qDebug(logGui()) << "Accepting general preferences pointer into settings widget.";
|
||||
prefs = pptr;
|
||||
havePrefs = true;
|
||||
}
|
||||
}
|
||||
|
||||
void settingswidget::acceptUdpPreferencesPtr(udpPreferences *upptr)
|
||||
{
|
||||
if(upptr != NULL)
|
||||
{
|
||||
qDebug(logGui()) << "Accepting UDP preferences pointer into settings widget.";
|
||||
udpPrefs = upptr;
|
||||
haveUdpPrefs = true;
|
||||
}
|
||||
}
|
||||
|
||||
void settingswidget::updateIfPrefs(int items)
|
||||
{
|
||||
prefIfItem pif;
|
||||
if(items & (int)if_all)
|
||||
{
|
||||
items = 0xffffffff;
|
||||
}
|
||||
for(int i=1; i < (int)if_all; i = i << 1)
|
||||
{
|
||||
if(items & i)
|
||||
{
|
||||
qDebug(logGui()) << "Updating If pref" << (int)i;
|
||||
pif = (prefIfItem)i;
|
||||
updateIfPref(pif);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// for(int i=0; 0x1 << i < (int)if_all; i++)
|
||||
// {
|
||||
// if(items & (0x1 << i))
|
||||
// {
|
||||
// qDebug(logGui()) << "Updating If pref" << (int)0;
|
||||
// pif = (prefIfItem)(0x1 << i);
|
||||
// updateIfPref(pif);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
void settingswidget::updateRaPrefs(int items)
|
||||
{
|
||||
prefRaItem pra;
|
||||
if(items & (int)ra_all)
|
||||
{
|
||||
items = 0xffffffff;
|
||||
}
|
||||
for(int i=1; i < (int)ra_all; i = i << 1)
|
||||
{
|
||||
if(items & i)
|
||||
{
|
||||
qDebug(logGui()) << "Updating Ra pref" << (int)i;
|
||||
pra = (prefRaItem)i;
|
||||
updateRaPref(pra);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void settingswidget::updateCtPrefs(int items)
|
||||
{
|
||||
prefCtItem pct;
|
||||
if(items & (int)ct_all)
|
||||
{
|
||||
items = 0xffffffff;
|
||||
}
|
||||
for(int i=1; i < (int)ct_all; i = i << 1)
|
||||
{
|
||||
if(items & i)
|
||||
{
|
||||
qDebug(logGui()) << "Updating Ct pref" << (int)i;
|
||||
pct = (prefCtItem)i;
|
||||
updateCtPref(pct);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void settingswidget::updateLanPrefs(int items)
|
||||
{
|
||||
prefLanItem plan;
|
||||
if(items & (int)l_all)
|
||||
{
|
||||
items = 0xffffffff;
|
||||
}
|
||||
for(int i=1; i < (int)l_all; i = i << 1)
|
||||
{
|
||||
if(items & i)
|
||||
{
|
||||
qDebug(logGui()) << "Updating Lan pref" << (int)i;
|
||||
plan = (prefLanItem)i;
|
||||
updateLanPref(plan);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void settingswidget::updateClusterPrefs(int items)
|
||||
{
|
||||
prefClusterItem pcl;
|
||||
if(items & (int)cl_all)
|
||||
{
|
||||
items = 0xffffffff;
|
||||
}
|
||||
for(int i=0; i < (int)cl_all; i++)
|
||||
{
|
||||
if(items & (0x1 << i))
|
||||
{
|
||||
qDebug(logGui()) << "Updating Cluster pref" << (int)i;
|
||||
pcl = (prefClusterItem)i;
|
||||
updateClusterPref(pcl);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void settingswidget::updateIfPref(prefIfItem pif)
|
||||
{
|
||||
updatingUIFromPrefs = true;
|
||||
switch(pif)
|
||||
{
|
||||
case if_useFullScreen:
|
||||
quietlyUpdateCheckbox(ui->fullScreenChk, prefs->useFullScreen);
|
||||
break;
|
||||
case if_useSystemTheme:
|
||||
quietlyUpdateCheckbox(ui->useSystemThemeChk, prefs->useSystemTheme);
|
||||
break;
|
||||
case if_drawPeaks:
|
||||
// depreciated;
|
||||
break;
|
||||
case if_underlayMode:
|
||||
updateUnderlayMode();
|
||||
break;
|
||||
case if_underlayBufferSize:
|
||||
quietlyUpdateSlider(ui->underlayBufferSlider, prefs->underlayBufferSize);
|
||||
break;
|
||||
case if_wfAntiAlias:
|
||||
quietlyUpdateCheckbox(ui->wfAntiAliasChk, prefs->wfAntiAlias);
|
||||
break;
|
||||
case if_wfInterpolate:
|
||||
quietlyUpdateCheckbox(ui->wfInterpolateChk, prefs->wfInterpolate);
|
||||
break;
|
||||
case if_wftheme:
|
||||
// Not handled in settings.
|
||||
break;
|
||||
case if_plotFloor:
|
||||
// Not handled in settings.
|
||||
break;
|
||||
case if_plotCeiling:
|
||||
// Not handled in settings.
|
||||
break;
|
||||
case if_stylesheetPath:
|
||||
// No UI element for this.
|
||||
break;
|
||||
case if_wflength:
|
||||
// Not handled in settings.
|
||||
break;
|
||||
case if_confirmExit:
|
||||
// No UI element for this.
|
||||
break;
|
||||
case if_confirmPowerOff:
|
||||
// No UI element for this.
|
||||
break;
|
||||
case if_meterKind:
|
||||
{
|
||||
int m = ui->meter2selectionCombo->findData(prefs->meter2Type);
|
||||
ui->meter2selectionCombo->setCurrentIndex(m);
|
||||
break;
|
||||
}
|
||||
case if_clickDragTuningEnable:
|
||||
quietlyUpdateCheckbox(ui->clickDragTuningEnableChk, prefs->clickDragTuningEnable);
|
||||
break;
|
||||
case if_currentColorPresetNumber:
|
||||
ui->colorPresetCombo->setCurrentIndex(prefs->currentColorPresetNumber);
|
||||
// activate? or done when prefs load? Maybe some of each?
|
||||
// TODO
|
||||
break;
|
||||
default:
|
||||
qWarning(logGui()) << "Did not understand if pref update item " << (int)pif;
|
||||
break;
|
||||
}
|
||||
updatingUIFromPrefs = false;
|
||||
}
|
||||
|
||||
void settingswidget::updateRaPref(prefRaItem pra)
|
||||
{
|
||||
updatingUIFromPrefs = true;
|
||||
switch(pra)
|
||||
{
|
||||
case ra_radioCIVAddr:
|
||||
// It may be possible to ignore this value at this time.
|
||||
// TODO
|
||||
if(prefs->radioCIVAddr == 0)
|
||||
{
|
||||
ui->rigCIVaddrHexLine->setText("auto");
|
||||
ui->rigCIVaddrHexLine->setEnabled(false);
|
||||
} else {
|
||||
ui->rigCIVaddrHexLine->setEnabled(true);
|
||||
ui->rigCIVaddrHexLine->setText(QString("%1").arg(prefs->radioCIVAddr, 2, 16));
|
||||
}
|
||||
break;
|
||||
case ra_CIVisRadioModel:
|
||||
quietlyUpdateCheckbox(ui->useCIVasRigIDChk, prefs->CIVisRadioModel);
|
||||
break;
|
||||
case ra_forceRTSasPTT:
|
||||
quietlyUpdateCheckbox(ui->useRTSforPTTchk, prefs->forceRTSasPTT);
|
||||
break;
|
||||
case ra_polling_ms:
|
||||
if(prefs->polling_ms == 0)
|
||||
{
|
||||
// Automatic
|
||||
ui->pollingButtonGroup->blockSignals(true);
|
||||
ui->autoPollBtn->setChecked(true);
|
||||
ui->manualPollBtn->setChecked(false);
|
||||
ui->pollingButtonGroup->blockSignals(false);
|
||||
ui->pollTimeMsSpin->setEnabled(false);
|
||||
} else {
|
||||
// Manual
|
||||
ui->pollingButtonGroup->blockSignals(true);
|
||||
ui->autoPollBtn->setChecked(false);
|
||||
ui->manualPollBtn->setChecked(true);
|
||||
ui->pollingButtonGroup->blockSignals(false);
|
||||
ui->pollTimeMsSpin->blockSignals(true);
|
||||
ui->pollTimeMsSpin->setValue(prefs->polling_ms);
|
||||
ui->pollTimeMsSpin->blockSignals(false);
|
||||
ui->pollTimeMsSpin->setEnabled(true);
|
||||
}
|
||||
break;
|
||||
case ra_serialPortRadio:
|
||||
{
|
||||
int serialIndex = ui->serialDeviceListCombo->findText(prefs->serialPortRadio);
|
||||
if (serialIndex != -1) {
|
||||
ui->serialDeviceListCombo->setCurrentIndex(serialIndex);
|
||||
} else {
|
||||
// TODO
|
||||
qWarning(logGui()) << "Cannot find serial port in serial combo box.";
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ra_serialPortBaud:
|
||||
ui->baudRateCombo->blockSignals(true);
|
||||
ui->baudRateCombo->setCurrentIndex(ui->baudRateCombo->findData(prefs->serialPortBaud));
|
||||
ui->baudRateCombo->blockSignals(false);
|
||||
break;
|
||||
case ra_virtualSerialPort:
|
||||
{
|
||||
int vspIndex = ui->vspCombo->findText(prefs->virtualSerialPort);
|
||||
if (vspIndex != -1) {
|
||||
ui->vspCombo->setCurrentIndex(vspIndex);
|
||||
}
|
||||
else
|
||||
{
|
||||
ui->vspCombo->addItem(prefs->virtualSerialPort);
|
||||
ui->vspCombo->setCurrentIndex(ui->vspCombo->count() - 1);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case ra_localAFgain:
|
||||
// Not handled here.
|
||||
break;
|
||||
case ra_audioSystem:
|
||||
ui->audioSystemCombo->blockSignals(true);
|
||||
ui->audioSystemServerCombo->blockSignals(true);
|
||||
ui->audioSystemCombo->setCurrentIndex(prefs->audioSystem);
|
||||
ui->audioSystemServerCombo->setCurrentIndex(prefs->audioSystem);
|
||||
ui->audioSystemServerCombo->blockSignals(false);
|
||||
ui->audioSystemCombo->blockSignals(false);
|
||||
break;
|
||||
default:
|
||||
qWarning(logGui()) << "Cannot update ra pref" << (int)pra;
|
||||
}
|
||||
updatingUIFromPrefs = false;
|
||||
}
|
||||
|
||||
void settingswidget::updateCtPref(prefCtItem pct)
|
||||
{
|
||||
updatingUIFromPrefs = true;
|
||||
|
||||
switch(pct)
|
||||
{
|
||||
case ct_enablePTT:
|
||||
quietlyUpdateCheckbox(ui->pttEnableChk, prefs->enablePTT);
|
||||
break;
|
||||
case ct_niceTS:
|
||||
quietlyUpdateCheckbox(ui->tuningFloorZerosChk, prefs->niceTS);
|
||||
break;
|
||||
case ct_automaticSidebandSwitching:
|
||||
quietlyUpdateCheckbox(ui->autoSSBchk, prefs->automaticSidebandSwitching);
|
||||
break;
|
||||
case ct_enableUSBControllers:
|
||||
quietlyUpdateCheckbox(ui->enableUsbChk, prefs->enableUSBControllers);
|
||||
break;
|
||||
case ct_usbSensitivity:
|
||||
// No UI element for this.
|
||||
break;
|
||||
default:
|
||||
qWarning(logGui()) << "No UI element matches setting" << (int)pct;
|
||||
break;
|
||||
}
|
||||
updatingUIFromPrefs = false;
|
||||
}
|
||||
|
||||
void settingswidget::updateLanPref(prefLanItem plan)
|
||||
{
|
||||
updatingUIFromPrefs = true;
|
||||
switch(plan)
|
||||
{
|
||||
case l_enableLAN:
|
||||
quietlyUpdateRadiobutton(ui->lanEnableBtn, prefs->enableLAN);
|
||||
break;
|
||||
case l_enableRigCtlD:
|
||||
quietlyUpdateCheckbox(ui->enableRigctldChk, prefs->enableRigCtlD);
|
||||
break;
|
||||
case l_rigCtlPort:
|
||||
ui->rigctldPortTxt->setText(QString::number(prefs->rigCtlPort));
|
||||
break;
|
||||
case l_tcpPort:
|
||||
ui->tcpServerPortTxt->setText(QString::number(prefs->tcpPort));
|
||||
break;
|
||||
case l_waterfallFormat:
|
||||
ui->waterfallFormatCombo->blockSignals(true);
|
||||
ui->waterfallFormatCombo->setCurrentIndex(prefs->waterfallFormat);
|
||||
ui->waterfallFormatCombo->blockSignals(false);
|
||||
break;
|
||||
default:
|
||||
qWarning(logGui()) << "Did not find matching preference for ui update:" << (int)plan;
|
||||
}
|
||||
updatingUIFromPrefs = false;
|
||||
}
|
||||
|
||||
void settingswidget::updateClusterPref(prefClusterItem pcl)
|
||||
{
|
||||
updatingUIFromPrefs = true;
|
||||
// TODO, lots of work here....
|
||||
switch(pcl)
|
||||
{
|
||||
case cl_clusterUdpEnable:
|
||||
quietlyUpdateCheckbox(ui->clusterUdpEnable, prefs->clusterUdpEnable);
|
||||
break;
|
||||
case cl_clusterTcpEnable:
|
||||
quietlyUpdateCheckbox(ui->clusterTcpEnable, prefs->clusterTcpEnable);
|
||||
break;
|
||||
case cl_clusterUdpPort:
|
||||
ui->clusterUdpPortLineEdit->setText(QString::number(prefs->clusterUdpPort));
|
||||
break;
|
||||
case cl_clusterTcpServerName:
|
||||
break;
|
||||
case cl_clusterTcpUserName:
|
||||
break;
|
||||
case cl_clusterTcpPassword:
|
||||
break;
|
||||
case cl_clusterTimeout:
|
||||
break;
|
||||
case cl_clusterSkimmerSpotsEnable:
|
||||
quietlyUpdateCheckbox(ui->clusterSkimmerSpotsEnable, prefs->clusterSkimmerSpotsEnable);
|
||||
break;
|
||||
default:
|
||||
qWarning(logGui()) << "Did not find matching UI element for cluster preference " << (int)pcl;
|
||||
break;
|
||||
}
|
||||
updatingUIFromPrefs = false;
|
||||
}
|
||||
|
||||
void settingswidget::updateUdpPrefs(int items)
|
||||
{
|
||||
udpPrefsItem upi;
|
||||
if(items & (int)u_all)
|
||||
{
|
||||
items = 0xffffffff;
|
||||
}
|
||||
for(int i=0; i < (int)u_all; i++)
|
||||
{
|
||||
if(items & i)
|
||||
{
|
||||
qDebug(logGui()) << "Updating UDP preference " << i;
|
||||
upi = (udpPrefsItem)i;
|
||||
updateUdpPref(upi);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void settingswidget::updateUdpPref(udpPrefsItem upi)
|
||||
{
|
||||
updatingUIFromPrefs = true;
|
||||
switch(upi)
|
||||
{
|
||||
case u_ipAddress:
|
||||
ui->ipAddressTxt->setEnabled(ui->lanEnableBtn->isChecked());
|
||||
ui->ipAddressTxt->setText(udpPrefs->ipAddress);
|
||||
break;
|
||||
case u_controlLANPort:
|
||||
ui->controlPortTxt->setEnabled(ui->lanEnableBtn->isChecked());
|
||||
ui->controlPortTxt->setText(QString("%1").arg(udpPrefs->controlLANPort));
|
||||
break;
|
||||
case u_serialLANPort:
|
||||
// Not used in the UI.
|
||||
break;
|
||||
case u_audioLANPort:
|
||||
// Not used in the UI.
|
||||
break;
|
||||
case u_username:
|
||||
ui->usernameTxt->setEnabled(ui->lanEnableBtn->isChecked());
|
||||
ui->usernameTxt->setText(QString("%1").arg(udpPrefs->username));
|
||||
break;
|
||||
case u_password:
|
||||
ui->passwordTxt->setEnabled(ui->lanEnableBtn->isChecked());
|
||||
ui->passwordTxt->setText(QString("%1").arg(udpPrefs->password));
|
||||
break;
|
||||
case u_clientName:
|
||||
// Not used in the UI.
|
||||
break;
|
||||
case u_waterfallFormat:
|
||||
// Not used in the UI.
|
||||
break;
|
||||
case u_halfDuplex:
|
||||
ui->audioDuplexCombo->setCurrentIndex((int)udpPrefs->halfDuplex);
|
||||
break;
|
||||
default:
|
||||
qWarning(logGui()) << "Did not find matching UI element for UDP pref item " << (int)upi;
|
||||
break;
|
||||
}
|
||||
updatingUIFromPrefs = false;
|
||||
}
|
||||
|
||||
void settingswidget::updateUnderlayMode()
|
||||
{
|
||||
|
||||
quietlyUpdateRadiobutton(ui->underlayNone, false);
|
||||
quietlyUpdateRadiobutton(ui->underlayPeakHold, false);
|
||||
quietlyUpdateRadiobutton(ui->underlayPeakBuffer, false);
|
||||
quietlyUpdateRadiobutton(ui->underlayAverageBuffer, false);
|
||||
|
||||
switch(prefs->underlayMode) {
|
||||
case underlayNone:
|
||||
quietlyUpdateRadiobutton(ui->underlayNone, true);
|
||||
break;
|
||||
case underlayPeakHold:
|
||||
quietlyUpdateRadiobutton(ui->underlayPeakHold, true);
|
||||
break;
|
||||
case underlayPeakBuffer:
|
||||
quietlyUpdateRadiobutton(ui->underlayPeakBuffer, true);
|
||||
break;
|
||||
case underlayAverageBuffer:
|
||||
quietlyUpdateRadiobutton(ui->underlayAverageBuffer, true);
|
||||
break;
|
||||
default:
|
||||
qWarning() << "Do not understand underlay mode: " << (unsigned int) prefs->underlayMode;
|
||||
}
|
||||
}
|
||||
|
||||
void settingswidget::updateAllPrefs()
|
||||
{
|
||||
// DEPRECIATED
|
||||
|
||||
|
||||
// Review all the preferences. This is intended to be called
|
||||
// after new settings are loaded in.
|
||||
updatingUIFromPrefs = true;
|
||||
ui->fullScreenChk->setChecked(prefs->useFullScreen);
|
||||
ui->useSystemThemeChk->setChecked(prefs->useSystemTheme);
|
||||
//drawPeaks not used
|
||||
switch(prefs->underlayMode) {
|
||||
case underlayNone:
|
||||
ui->underlayNone->setChecked(true);
|
||||
break;
|
||||
case underlayPeakHold:
|
||||
ui->underlayPeakHold->setChecked(true);
|
||||
break;
|
||||
case underlayPeakBuffer:
|
||||
ui->underlayPeakBuffer->setChecked(true);
|
||||
break;
|
||||
case underlayAverageBuffer:
|
||||
ui->underlayAverageBuffer->setChecked(true);
|
||||
break;
|
||||
default:
|
||||
qWarning() << "Do not understand underlay mode: " << (unsigned int) prefs->underlayMode;
|
||||
}
|
||||
quietlyUpdateSlider(ui->underlayBufferSlider, prefs->underlayBufferSize);
|
||||
ui->wfAntiAliasChk->setChecked(prefs->wfAntiAlias);
|
||||
ui->wfInterpolateChk->setChecked(prefs->wfInterpolate);
|
||||
|
||||
updatingUIFromPrefs = false;
|
||||
}
|
||||
|
||||
void settingswidget::quietlyUpdateSlider(QSlider *sl, int val)
|
||||
{
|
||||
sl->blockSignals(true);
|
||||
if( (val >= sl->minimum()) && (val <= sl->maximum()) )
|
||||
sl->setValue(val);
|
||||
sl->blockSignals(false);
|
||||
}
|
||||
|
||||
void settingswidget::quietlyUpdateCheckbox(QCheckBox *cb, bool isChecked)
|
||||
{
|
||||
cb->blockSignals(true);
|
||||
cb->setChecked(isChecked);
|
||||
cb->blockSignals(false);
|
||||
}
|
||||
|
||||
void settingswidget::quietlyUpdateRadiobutton(QRadioButton *rb, bool isChecked)
|
||||
{
|
||||
rb->blockSignals(true);
|
||||
rb->setChecked(isChecked);
|
||||
rb->blockSignals(false);
|
||||
}
|
||||
|
||||
void settingswidget::on_lanEnableBtn_clicked(bool checked)
|
||||
{
|
||||
// TODO: prefs.enableLAN = checked;
|
||||
// TOTO? ui->connectBtn->setEnabled(true);
|
||||
ui->ipAddressTxt->setEnabled(checked);
|
||||
ui->controlPortTxt->setEnabled(checked);
|
||||
ui->usernameTxt->setEnabled(checked);
|
||||
ui->passwordTxt->setEnabled(checked);
|
||||
ui->audioRXCodecCombo->setEnabled(checked);
|
||||
ui->audioTXCodecCombo->setEnabled(checked);
|
||||
ui->audioSampleRateCombo->setEnabled(checked);
|
||||
ui->rxLatencySlider->setEnabled(checked);
|
||||
ui->txLatencySlider->setEnabled(checked);
|
||||
ui->rxLatencyValue->setEnabled(checked);
|
||||
ui->txLatencyValue->setEnabled(checked);
|
||||
ui->audioOutputCombo->setEnabled(checked);
|
||||
ui->audioInputCombo->setEnabled(checked);
|
||||
ui->baudRateCombo->setEnabled(!checked);
|
||||
ui->serialDeviceListCombo->setEnabled(!checked);
|
||||
ui->serverRXAudioInputCombo->setEnabled(!checked);
|
||||
ui->serverTXAudioOutputCombo->setEnabled(!checked);
|
||||
if(checked)
|
||||
{
|
||||
//showStatusBarText("After filling in values, press Save Settings.");
|
||||
}
|
||||
prefs->enableLAN = checked;
|
||||
// TODO: emit widgetChangedPrefs(l_enableLAN);
|
||||
}
|
|
@ -0,0 +1,83 @@
|
|||
#ifndef SETTINGSWIDGET_H
|
||||
#define SETTINGSWIDGET_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QSlider>
|
||||
#include <QCheckBox>
|
||||
#include <QRadioButton>
|
||||
|
||||
#include "logcategories.h"
|
||||
#include "prefs.h"
|
||||
#include "colorprefs.h"
|
||||
#include "udpbase.h" // for udp preferences
|
||||
|
||||
namespace Ui {
|
||||
class settingswidget;
|
||||
}
|
||||
|
||||
class settingswidget : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit settingswidget(QWidget *parent = nullptr);
|
||||
|
||||
~settingswidget();
|
||||
|
||||
public slots:
|
||||
void acceptPreferencesPtr(preferences *pptr);
|
||||
void acceptUdpPreferencesPtr(udpPreferences *upptr);
|
||||
|
||||
void updateIfPrefs(int items);
|
||||
void updateRaPrefs(int items);
|
||||
void updateCtPrefs(int items);
|
||||
void updateLanPrefs(int items);
|
||||
void updateClusterPrefs(int items);
|
||||
|
||||
void updateIfPref(prefIfItem pif);
|
||||
void updateRaPref(prefRaItem pra);
|
||||
void updateCtPref(prefCtItem pct);
|
||||
void updateLanPref(prefLanItem plan);
|
||||
void updateClusterPref(prefClusterItem pcl);
|
||||
|
||||
// depreciated:
|
||||
//void externalChangedPreferences(prefItem pi);
|
||||
void updateUdpPref(udpPrefsItem upi);
|
||||
//void externalChangedMultiplePreferences(uint64_t items);
|
||||
void updateUdpPrefs(int items);
|
||||
|
||||
|
||||
signals:
|
||||
// Not sure if we should do it this way,
|
||||
// since many of these changes are not thought
|
||||
// of as merely "preferences"... although they generally are...
|
||||
// ...hmm
|
||||
void changedIfPref(int items);
|
||||
void changedRaPref(int items);
|
||||
void changedCtPrefs(int items);
|
||||
void changedLanPrefs(int items);
|
||||
void changedClusterPrefs(int items);
|
||||
|
||||
private slots:
|
||||
void on_settingsList_currentRowChanged(int currentRow);
|
||||
|
||||
void on_lanEnableBtn_clicked(bool checked);
|
||||
|
||||
private:
|
||||
Ui::settingswidget *ui;
|
||||
void createSettingsListItems();
|
||||
void populateComboBoxes();
|
||||
void updateAllPrefs();
|
||||
void updateUnderlayMode();
|
||||
void quietlyUpdateSlider(QSlider* sl, int val);
|
||||
void quietlyUpdateCheckbox(QCheckBox *cb, bool isChecked);
|
||||
void quietlyUpdateRadiobutton(QRadioButton *rb, bool isChecked);
|
||||
|
||||
preferences *prefs = NULL;
|
||||
udpPreferences *udpPrefs = NULL;
|
||||
bool havePrefs = false;
|
||||
bool haveUdpPrefs = false;
|
||||
bool updatingUIFromPrefs = false;
|
||||
};
|
||||
|
||||
#endif // SETTINGSWIDGET_H
|
Plik diff jest za duży
Load Diff
12
udpbase.h
12
udpbase.h
|
@ -24,6 +24,18 @@
|
|||
|
||||
#include "packettypes.h"
|
||||
|
||||
enum udpPrefsItem {
|
||||
u_ipAddress = 1 << 0,
|
||||
u_controlLANPort = 1 << 1,
|
||||
u_serialLANPort = 1 << 2,
|
||||
u_audioLANPort = 1 << 3,
|
||||
u_username = 1 << 4,
|
||||
u_password = 1 << 5,
|
||||
u_clientName = 1 << 6,
|
||||
u_waterfallFormat = 1 << 7,
|
||||
u_halfDuplex = 1 << 8,
|
||||
u_all = 1 << 9
|
||||
};
|
||||
|
||||
|
||||
struct udpPreferences {
|
||||
|
|
36
wfmain.cpp
36
wfmain.cpp
|
@ -5,7 +5,7 @@
|
|||
#include "rigidentities.h"
|
||||
#include "logcategories.h"
|
||||
|
||||
// This code is copyright 2017-2022 Elliott H. Liggett
|
||||
// This code is copyright 2017-2023 Elliott H. Liggett
|
||||
// All rights reserved
|
||||
|
||||
// Log support:
|
||||
|
@ -54,6 +54,7 @@ wfmain::wfmain(const QString settingsFile, const QString logFile, bool debugMode
|
|||
selRad = new selectRadio();
|
||||
bandbtns = new bandbuttons();
|
||||
finputbtns = new frequencyinputwidget();
|
||||
setupui = new settingswidget();
|
||||
|
||||
qRegisterMetaType<udpPreferences>(); // Needs to be registered early.
|
||||
qRegisterMetaType<rigCapabilities>();
|
||||
|
@ -304,6 +305,7 @@ void wfmain::openRig()
|
|||
|
||||
}
|
||||
|
||||
// Migrated
|
||||
void wfmain::createSettingsListItems()
|
||||
{
|
||||
// Add items to the settings tab list widget
|
||||
|
@ -318,18 +320,12 @@ void wfmain::createSettingsListItems()
|
|||
ui->settingsStack->setCurrentIndex(0);
|
||||
}
|
||||
|
||||
// Migrated
|
||||
void wfmain::on_settingsList_currentRowChanged(int currentRow)
|
||||
{
|
||||
ui->settingsStack->setCurrentIndex(currentRow);
|
||||
}
|
||||
|
||||
|
||||
void wfmain::connectSettingsList()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
void wfmain::rigConnections()
|
||||
{
|
||||
connect(this, SIGNAL(setCIVAddr(unsigned char)), rig, SLOT(setCIVAddr(unsigned char)));
|
||||
|
@ -1120,6 +1116,7 @@ void wfmain::setupMainUI()
|
|||
|
||||
ui->controlPortTxt->setValidator(new QIntValidator(this));
|
||||
|
||||
// Keep this code when the rest is removed from this function:
|
||||
qDebug(logSystem()) << "Running with debugging options enabled.";
|
||||
#ifdef QT_DEBUG
|
||||
ui->debugBtn->setVisible(true);
|
||||
|
@ -1239,6 +1236,7 @@ void wfmain::prepareSettingsWindow()
|
|||
// TODO: Capture an event when the window closes and handle accordingly.
|
||||
}
|
||||
|
||||
// NOT Migrated, EHL TODO, carefully remove this function
|
||||
void wfmain::updateSizes(int tabIndex)
|
||||
{
|
||||
|
||||
|
@ -2573,6 +2571,15 @@ void wfmain::loadSettings()
|
|||
|
||||
settings->endGroup();
|
||||
#endif
|
||||
|
||||
setupui->acceptPreferencesPtr(&prefs);
|
||||
setupui->updateIfPrefs((int)if_all);
|
||||
setupui->updateRaPrefs((int)ra_all);
|
||||
setupui->updateCtPrefs((int)ct_all);
|
||||
setupui->updateClusterPrefs((int)cl_all);
|
||||
|
||||
setupui->acceptUdpPreferencesPtr(&udpPrefs);
|
||||
setupui->updateUdpPrefs((int)u_all);
|
||||
}
|
||||
|
||||
void wfmain::serverAddUserLine(const QString& user, const QString& pass, const int& type)
|
||||
|
@ -6198,6 +6205,7 @@ void wfmain::on_serialEnableBtn_clicked(bool checked)
|
|||
|
||||
}
|
||||
|
||||
// Migrated
|
||||
void wfmain::on_lanEnableBtn_clicked(bool checked)
|
||||
{
|
||||
prefs.enableLAN = checked;
|
||||
|
@ -7600,7 +7608,12 @@ void wfmain::on_underlayAverageBuffer_toggled(bool checked)
|
|||
void wfmain::on_debugBtn_clicked()
|
||||
{
|
||||
qInfo(logSystem()) << "Debug button pressed.";
|
||||
mem.dumpMemory();
|
||||
//showAndRaiseWidget(setupui);
|
||||
setupui->updateIfPrefs((int)if_all);
|
||||
setupui->updateRaPrefs((int)ra_all);
|
||||
setupui->updateCtPrefs((int)ct_all);
|
||||
setupui->updateClusterPrefs((int)cl_all);
|
||||
setupui->updateUdpPrefs((int)u_all);
|
||||
}
|
||||
|
||||
// ---------- color helper functions: ---------- //
|
||||
|
@ -8985,3 +8998,8 @@ void wfmain::on_showFreqBtn_clicked()
|
|||
{
|
||||
showAndRaiseWidget(finputbtns);
|
||||
}
|
||||
|
||||
void wfmain::on_showSettingsBtn_clicked()
|
||||
{
|
||||
showAndRaiseWidget(setupui);
|
||||
}
|
||||
|
|
5
wfmain.h
5
wfmain.h
|
@ -38,6 +38,7 @@
|
|||
#include "cwsender.h"
|
||||
#include "bandbuttons.h"
|
||||
#include "frequencyinputwidget.h"
|
||||
#include "settingswidget.h"
|
||||
#include "udpserver.h"
|
||||
#include "qledlabel.h"
|
||||
#include "rigctld.h"
|
||||
|
@ -560,6 +561,8 @@ private slots:
|
|||
|
||||
void on_showFreqBtn_clicked();
|
||||
|
||||
void on_showSettingsBtn_clicked();
|
||||
|
||||
private:
|
||||
Ui::wfmain *ui;
|
||||
void closeEvent(QCloseEvent *event);
|
||||
|
@ -571,7 +574,6 @@ private:
|
|||
void saveSettings();
|
||||
|
||||
void createSettingsListItems();
|
||||
void connectSettingsList();
|
||||
|
||||
void initLogging();
|
||||
QTimer logCheckingTimer;
|
||||
|
@ -904,6 +906,7 @@ private:
|
|||
loggingWindow *logWindow;
|
||||
bandbuttons *bandbtns;
|
||||
frequencyinputwidget *finputbtns;
|
||||
settingswidget *setupui;
|
||||
|
||||
udpServer* udp = Q_NULLPTR;
|
||||
rigCtlD* rigCtl = Q_NULLPTR;
|
||||
|
|
|
@ -4454,6 +4454,13 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="showSettingsBtn">
|
||||
<property name="text">
|
||||
<string>Settings</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QPushButton" name="saveSettingsBtn">
|
||||
<property name="text">
|
||||
|
@ -4574,7 +4581,7 @@
|
|||
<connections/>
|
||||
<buttongroups>
|
||||
<buttongroup name="pollingButtonGroup"/>
|
||||
<buttongroup name="buttonGroup"/>
|
||||
<buttongroup name="underlayButtonGroup"/>
|
||||
<buttongroup name="buttonGroup"/>
|
||||
</buttongroups>
|
||||
</ui>
|
||||
|
|
|
@ -221,6 +221,7 @@ SOURCES += main.cpp\
|
|||
cwsender.cpp \
|
||||
frequencyinputwidget.cpp \
|
||||
loggingwindow.cpp \
|
||||
settingswidget.cpp \
|
||||
wfmain.cpp \
|
||||
commhandler.cpp \
|
||||
rigcommander.cpp \
|
||||
|
@ -266,6 +267,7 @@ HEADERS += wfmain.h \
|
|||
rigcommander.h \
|
||||
freqmemory.h \
|
||||
rigidentities.h \
|
||||
settingswidget.h \
|
||||
sidebandchooser.h \
|
||||
udpbase.h \
|
||||
udphandler.h \
|
||||
|
@ -312,6 +314,7 @@ FORMS += wfmain.ui \
|
|||
satellitesetup.ui \
|
||||
selectradio.ui \
|
||||
repeatersetup.ui \
|
||||
settingswidget.ui \
|
||||
transceiveradjustments.ui \
|
||||
controllersetup.ui \
|
||||
aboutbox.ui
|
||||
|
|
Ładowanie…
Reference in New Issue