kopia lustrzana https://gitlab.com/eliggett/wfview
Various fixes
rodzic
2f3610d8ad
commit
a0eabdafe8
512
memories.cpp
512
memories.cpp
|
@ -44,6 +44,10 @@ memories::memories(rigCapabilities rigCaps, QWidget *parent) :
|
|||
ui->group->setCurrentIndex(-1);
|
||||
ui->group->blockSignals(false);
|
||||
|
||||
for (int i=0;i<100;i++)
|
||||
{
|
||||
dvsql.append(QString::number(i).rightJustified(2,'0'));
|
||||
}
|
||||
|
||||
scan = QStringList({"OFF","*1","*2","*3"});
|
||||
split = QStringList({"OFF","ON"});
|
||||
|
@ -261,109 +265,86 @@ void memories::on_table_cellChanged(int row, int col)
|
|||
case columnDuplexB:
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDuplex),ui->table->item(row,columnDuplexB)->text());
|
||||
break;
|
||||
// case columnOffset:
|
||||
// ui->table->model()->setData(ui->table->model()->index(row,columnOffsetB),ui->table->item(row,columnOffset)->text());
|
||||
// break;
|
||||
// case columnOffsetB:
|
||||
// ui->table->model()->setData(ui->table->model()->index(row,columnOffset),ui->table->item(row,columnOffsetB)->text());
|
||||
// break;
|
||||
case columnOffset:
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnOffsetB),ui->table->item(row,columnOffset)->text());
|
||||
break;
|
||||
case columnOffsetB:
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnOffset),ui->table->item(row,columnOffsetB)->text());
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
ui->table->blockSignals(false);
|
||||
|
||||
// The table shouldn't be updated below
|
||||
// The table shouldn't be updated below, simply queried for data.
|
||||
|
||||
for (quint8 f=0;f<split.size();f++)
|
||||
{
|
||||
if ((ui->table->item(row,columnSplit) == NULL) ? false : ui->table->item(row,columnSplit)->text().toUpper()==split[f].toUpper()) {
|
||||
currentMemory->split=f;
|
||||
break;
|
||||
}
|
||||
if (!ui->table->isColumnHidden(columnSplit) && ui->table->item(row,columnSplit) != NULL) {
|
||||
currentMemory->split = split.indexOf(ui->table->item(row,columnSplit)->text().toUpper());
|
||||
}
|
||||
|
||||
for (quint8 f=0;f<scan.size();f++)
|
||||
{
|
||||
if ((ui->table->item(row,columnScan) == NULL) ? false : ui->table->item(row,columnScan)->text().toUpper()==scan[f].toUpper()) {
|
||||
currentMemory->scan=f;
|
||||
break;
|
||||
}
|
||||
if (!ui->table->isColumnHidden(columnScan) && ui->table->item(row,columnScan) != NULL) {
|
||||
currentMemory->scan = scan.indexOf(ui->table->item(row,columnScan)->text().toUpper());
|
||||
}
|
||||
|
||||
for (quint8 f=0;f<vfos.size();f++)
|
||||
{
|
||||
if ((ui->table->item(row,columnVFO) == NULL) ? false : ui->table->item(row,columnVFO)->text().toUpper()==vfos[f].toUpper()) {
|
||||
currentMemory->vfo=f;
|
||||
break;
|
||||
}
|
||||
if ((ui->table->item(row,columnVFOB) == NULL) ? false : ui->table->item(row,columnVFOB)->text().toUpper()==vfos[f].toUpper()) {
|
||||
currentMemory->vfoB=f;
|
||||
break;
|
||||
}
|
||||
if (!ui->table->isColumnHidden(columnVFO) && ui->table->item(row,columnVFO) != NULL) {
|
||||
currentMemory->vfo = vfos.indexOf(ui->table->item(row,columnVFO)->text().toUpper());
|
||||
}
|
||||
|
||||
if (!ui->table->isColumnHidden(columnVFOB) && ui->table->item(row,columnVFOB) != NULL) {
|
||||
currentMemory->vfoB = vfos.indexOf(ui->table->item(row,columnVFOB)->text().toUpper());
|
||||
}
|
||||
|
||||
currentMemory->frequency.Hz = (ui->table->item(row,columnFrequency) == NULL) ? 0 : quint64(ui->table->item(row,columnFrequency)->text().toDouble()*1000000.0);
|
||||
currentMemory->frequencyB.Hz = (ui->table->item(row,columnFrequencyB) == NULL) ? 0 : quint64(ui->table->item(row,columnFrequencyB)->text().toDouble()*1000000.0);
|
||||
|
||||
foreach (auto m, rigCaps.modes){
|
||||
if ((ui->table->item(row,columnMode) == NULL) ? false : ui->table->item(row,columnMode)->text()==m.name) {
|
||||
if (!ui->table->isColumnHidden(columnMode) && ui->table->item(row,columnMode) != NULL && ui->table->item(row,columnMode)->text()==m.name) {
|
||||
currentMemory->mode=m.reg;
|
||||
}
|
||||
if ((ui->table->item(row,columnModeB) == NULL) ? false : ui->table->item(row,columnModeB)->text()==m.name) {
|
||||
if (!ui->table->isColumnHidden(columnModeB) && ui->table->item(row,columnModeB) != NULL && ui->table->item(row,columnModeB)->text()==m.name) {
|
||||
currentMemory->modeB=m.reg;
|
||||
}
|
||||
}
|
||||
|
||||
for (quint8 f=0;f<dataModes.size();f++)
|
||||
{
|
||||
if ((ui->table->item(row,columnData) == NULL) ? false : ui->table->item(row,columnData)->text()==dataModes[f]) {
|
||||
currentMemory->datamode=f;
|
||||
}
|
||||
if ((ui->table->item(row,columnDataB) == NULL) ? false : ui->table->item(row,columnDataB)->text()==dataModes[f]) {
|
||||
currentMemory->datamodeB=f;
|
||||
}
|
||||
if (!ui->table->isColumnHidden(columnData) && ui->table->item(row,columnData) != NULL) {
|
||||
currentMemory->datamode = dataModes.indexOf(ui->table->item(row,columnData)->text().toUpper());
|
||||
}
|
||||
|
||||
for (quint8 f=0;f<filters.size();f++)
|
||||
{
|
||||
if ((ui->table->item(row,columnFilter) == NULL) ? false : ui->table->item(row,columnFilter)->text()==filters[f]) {
|
||||
currentMemory->filter=f+1; // Filters start at 1
|
||||
}
|
||||
if ((ui->table->item(row,columnFilterB) == NULL) ? false : ui->table->item(row,columnFilterB)->text()==filters[f]) {
|
||||
currentMemory->filterB=f+1; // Filters start at 1
|
||||
}
|
||||
if (!ui->table->isColumnHidden(columnDataB) && ui->table->item(row,columnDataB) != NULL) {
|
||||
currentMemory->datamodeB = dataModes.indexOf(ui->table->item(row,columnDataB)->text().toUpper());
|
||||
}
|
||||
|
||||
for (quint8 f=0;f<duplexModes.size();f++)
|
||||
{
|
||||
if ((ui->table->item(row,columnDuplex) == NULL) ? false : ui->table->item(row,columnDuplex)->text()==duplexModes[f]) {
|
||||
currentMemory->duplex=f;
|
||||
}
|
||||
if ((ui->table->item(row,columnDuplexB) == NULL) ? false : ui->table->item(row,columnDuplexB)->text()==duplexModes[f]) {
|
||||
currentMemory->duplexB=f;
|
||||
}
|
||||
|
||||
if (!ui->table->isColumnHidden(columnFilter) && ui->table->item(row,columnFilter) != NULL) {
|
||||
currentMemory->filter = filters.indexOf(ui->table->item(row,columnFilter)->text().toUpper())+1;
|
||||
}
|
||||
|
||||
for (quint8 f=0;f<toneModes.size();f++)
|
||||
{
|
||||
if ((ui->table->item(row,columnToneMode) == NULL) ? false : ui->table->item(row,columnToneMode)->text().toUpper()==toneModes[f].toUpper()) {
|
||||
currentMemory->tonemode=f;
|
||||
}
|
||||
if ((ui->table->item(row,columnToneModeB) == NULL) ? false : ui->table->item(row,columnToneModeB)->text().toUpper()==toneModes[f].toUpper()) {
|
||||
currentMemory->tonemodeB=f;
|
||||
}
|
||||
if (!ui->table->isColumnHidden(columnFilterB) && ui->table->item(row,columnFilterB) != NULL) {
|
||||
currentMemory->filterB = filters.indexOf(ui->table->item(row,columnFilterB)->text().toUpper())+1;
|
||||
}
|
||||
|
||||
for (quint8 f=0;f<dsql.size();f++)
|
||||
{
|
||||
if ((ui->table->item(row,columnDSQL) == NULL) ? false : ui->table->item(row,columnDSQL)->text()==dsql[f]) {
|
||||
currentMemory->dsql=f;
|
||||
}
|
||||
if ((ui->table->item(row,columnDSQLB) == NULL) ? false : ui->table->item(row,columnDSQLB)->text()==dsql[f]) {
|
||||
currentMemory->dsqlB=f;
|
||||
}
|
||||
if (!ui->table->isColumnHidden(columnDuplex) && ui->table->item(row,columnDuplex) != NULL) {
|
||||
currentMemory->duplex = duplexModes.indexOf(ui->table->item(row,columnDuplex)->text().toUpper());
|
||||
}
|
||||
|
||||
if (!ui->table->isColumnHidden(columnDuplexB) && ui->table->item(row,columnDuplexB) != NULL) {
|
||||
currentMemory->duplexB = duplexModes.indexOf(ui->table->item(row,columnDuplexB)->text().toUpper());
|
||||
}
|
||||
|
||||
if (!ui->table->isColumnHidden(columnToneMode) && ui->table->item(row,columnToneMode) != NULL) {
|
||||
currentMemory->tonemode = toneModes.indexOf(ui->table->item(row,columnToneMode)->text().toUpper());
|
||||
}
|
||||
|
||||
if (!ui->table->isColumnHidden(columnToneModeB) && ui->table->item(row,columnToneModeB) != NULL) {
|
||||
currentMemory->tonemodeB = toneModes.indexOf(ui->table->item(row,columnToneModeB)->text().toUpper());
|
||||
}
|
||||
|
||||
if (!ui->table->isColumnHidden(columnDSQL) && ui->table->item(row,columnDSQL) != NULL) {
|
||||
currentMemory->dsql = dsql.indexOf(ui->table->item(row,columnDSQL)->text().toUpper());
|
||||
}
|
||||
|
||||
if (!ui->table->isColumnHidden(columnDSQLB) && ui->table->item(row,columnDSQLB) != NULL) {
|
||||
currentMemory->dsqlB = dsql.indexOf(ui->table->item(row,columnDSQLB)->text().toUpper());
|
||||
}
|
||||
|
||||
currentMemory->tone = (ui->table->item(row,columnTone) == NULL) ? 670 : int(ui->table->item(row,columnTone)->text().toFloat()*10.0);
|
||||
|
@ -375,14 +356,12 @@ void memories::on_table_cellChanged(int row, int col)
|
|||
currentMemory->dtcs = (ui->table->item(row,columnDTCS) == NULL) ? 23 : int(ui->table->item(row,columnDTCS)->text().toUInt());
|
||||
currentMemory->dtcsB = (ui->table->item(row,columnDTCSB) == NULL) ? 23 : int(ui->table->item(row,columnDTCSB)->text().toUInt());
|
||||
|
||||
for (quint8 f=0;f<dtcsp.size();f++)
|
||||
{
|
||||
if ((ui->table->item(row,columnDTCSPolarity) == NULL) ? false : ui->table->item(row,columnDTCSPolarity)->text().toUpper()==dtcsp[f].toUpper()) {
|
||||
currentMemory->dtcsp=f;
|
||||
}
|
||||
if ((ui->table->item(row,columnDTCSPolarityB) == NULL) ? false : ui->table->item(row,columnDTCSPolarityB)->text().toUpper()==dtcsp[f].toUpper()) {
|
||||
currentMemory->dtcspB=f;
|
||||
}
|
||||
if (!ui->table->isColumnHidden(columnDTCSPolarity) && ui->table->item(row,columnDTCSPolarity) != NULL) {
|
||||
currentMemory->dtcsp = dtcsp.indexOf(ui->table->item(row,columnDTCSPolarity)->text().toUpper());
|
||||
}
|
||||
|
||||
if (!ui->table->isColumnHidden(columnDTCSPolarityB) && ui->table->item(row,columnDTCSPolarityB) != NULL) {
|
||||
currentMemory->dtcspB = dtcsp.indexOf(ui->table->item(row,columnDTCSPolarityB)->text().toUpper());
|
||||
}
|
||||
|
||||
currentMemory->dvsql = (ui->table->item(row,columnDVSquelch) == NULL) ? 0 : int(ui->table->item(row,columnDVSquelch)->text().toUInt());
|
||||
|
@ -417,18 +396,21 @@ void memories::on_table_cellChanged(int row, int col)
|
|||
}
|
||||
if (write) {
|
||||
emit setMemory(*currentMemory);
|
||||
|
||||
qInfo() << "Sending memory, group:" << currentMemory->group << "channel" << currentMemory->channel;
|
||||
// Set number to not be editable once written. Not sure why but this crashes?
|
||||
//ui->table->item(row,columnNum)->setFlags(ui->table->item(row,columnNum)->flags() & (~Qt::ItemIsEditable));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void memories::on_group_currentIndexChanged(int index)
|
||||
{
|
||||
Q_UNUSED(index)
|
||||
|
||||
timeoutTimer.start(MEMORY_TIMEOUT);
|
||||
|
||||
visibleColumns=1;
|
||||
|
||||
// Special case for group 100 on the IC705!
|
||||
if (ui->group->currentData().toInt() == 200)
|
||||
|
@ -462,7 +444,6 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
parser = rigCaps.memParser;
|
||||
}
|
||||
|
||||
int visibleRows=1;
|
||||
|
||||
foreach (auto parse, parser) {
|
||||
switch (parse.spec)
|
||||
|
@ -476,10 +457,10 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
case 'b':
|
||||
if (numEditor != Q_NULLPTR)
|
||||
delete numEditor;
|
||||
numEditor = new tableEditor(QRegularExpression("[0-9]{0,3}"),ui->table);
|
||||
numEditor = new tableEditor("999",ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnNum, numEditor);
|
||||
ui->table->showColumn(columnNum);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'c':
|
||||
if (scanList != Q_NULLPTR)
|
||||
|
@ -488,7 +469,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnScan, scanList);
|
||||
|
||||
ui->table->showColumn(columnScan);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'd':
|
||||
if (splitList != Q_NULLPTR)
|
||||
|
@ -504,8 +485,8 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->showColumn(columnSplit);
|
||||
ui->table->showColumn(columnScan);
|
||||
|
||||
visibleRows++;
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
|
||||
case 'e':
|
||||
|
@ -515,7 +496,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnVFO, vfoList);
|
||||
|
||||
ui->table->showColumn(columnVFO);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'E':
|
||||
if (vfoListB != Q_NULLPTR)
|
||||
|
@ -524,25 +505,25 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnVFOB, vfoListB);
|
||||
|
||||
ui->table->showColumn(columnVFOB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'f':
|
||||
if (freqEditor != Q_NULLPTR)
|
||||
delete freqEditor;
|
||||
freqEditor = new tableEditor(QRegularExpression("[0-9.]{0,10}"),ui->table);
|
||||
freqEditor = new tableEditor("00000.0000000",ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnFrequency, freqEditor);
|
||||
|
||||
ui->table->showColumn(columnFrequency);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'F':
|
||||
if (freqEditorB != Q_NULLPTR)
|
||||
delete freqEditorB;
|
||||
freqEditorB = new tableEditor(QRegularExpression("[0-9.]{0,10}"),ui->table);
|
||||
freqEditorB = new tableEditor("00000.000000",ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnFrequencyB, freqEditorB);
|
||||
|
||||
ui->table->showColumn(columnFrequencyB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'g':
|
||||
if (modesList != Q_NULLPTR)
|
||||
|
@ -551,7 +532,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnMode, modesList);
|
||||
|
||||
ui->table->showColumn(columnMode);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'G':
|
||||
if (modesListB != Q_NULLPTR)
|
||||
|
@ -560,7 +541,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnModeB, modesListB);
|
||||
|
||||
ui->table->showColumn(columnModeB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'h':
|
||||
if (filterList != Q_NULLPTR)
|
||||
|
@ -569,7 +550,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnFilter, filterList);
|
||||
|
||||
ui->table->showColumn(columnFilter);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'H':
|
||||
if (filterListB != Q_NULLPTR)
|
||||
|
@ -578,7 +559,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnFilterB, filterListB);
|
||||
|
||||
ui->table->showColumn(columnFilterB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'i':
|
||||
if (dataList != Q_NULLPTR)
|
||||
|
@ -587,7 +568,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnData, dataList);
|
||||
|
||||
ui->table->showColumn(columnData);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'I':
|
||||
if (dataListB != Q_NULLPTR)
|
||||
|
@ -596,7 +577,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnDataB, dataListB);
|
||||
|
||||
ui->table->showColumn(columnDataB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'j':
|
||||
if (duplexList != Q_NULLPTR)
|
||||
|
@ -611,8 +592,8 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
|
||||
ui->table->showColumn(columnDuplex);
|
||||
ui->table->showColumn(columnToneMode);
|
||||
visibleRows++;
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'J':
|
||||
if (duplexListB != Q_NULLPTR)
|
||||
|
@ -627,8 +608,8 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
|
||||
ui->table->showColumn(columnDuplexB);
|
||||
ui->table->showColumn(columnToneModeB);
|
||||
visibleRows++;
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'k':
|
||||
if (dataList != Q_NULLPTR)
|
||||
|
@ -643,8 +624,8 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
|
||||
ui->table->showColumn(columnData);
|
||||
ui->table->showColumn(columnToneMode);
|
||||
visibleRows++;
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'K':
|
||||
if (dataListB != Q_NULLPTR)
|
||||
|
@ -659,8 +640,8 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
|
||||
ui->table->showColumn(columnDataB);
|
||||
ui->table->showColumn(columnToneModeB);
|
||||
visibleRows++;
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'l':
|
||||
if (toneModesList != Q_NULLPTR)
|
||||
|
@ -669,7 +650,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnToneMode, toneModesList);
|
||||
|
||||
ui->table->showColumn(columnToneMode);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'L':
|
||||
if (toneModesListB != Q_NULLPTR)
|
||||
|
@ -678,7 +659,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnToneModeB, toneModesListB);
|
||||
|
||||
ui->table->showColumn(columnToneModeB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'm':
|
||||
if (dsqlList != Q_NULLPTR)
|
||||
|
@ -687,7 +668,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnDSQL, dsqlList);
|
||||
|
||||
ui->table->showColumn(columnDSQL);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'M':
|
||||
if (dsqlListB != Q_NULLPTR)
|
||||
|
@ -696,7 +677,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnDSQLB, dsqlListB);
|
||||
|
||||
ui->table->showColumn(columnDSQLB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'n':
|
||||
if (tonesList != Q_NULLPTR)
|
||||
|
@ -705,7 +686,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnTone, tonesList);
|
||||
|
||||
ui->table->showColumn(columnTone);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'N':
|
||||
if (tonesListB != Q_NULLPTR)
|
||||
|
@ -714,7 +695,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnToneB, tonesListB);
|
||||
|
||||
ui->table->showColumn(columnToneB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'o':
|
||||
if (tsqlList != Q_NULLPTR)
|
||||
|
@ -723,7 +704,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnTSQL, tsqlList);
|
||||
|
||||
ui->table->showColumn(columnTSQL);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'O':
|
||||
if (tsqlListB != Q_NULLPTR)
|
||||
|
@ -732,7 +713,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnTSQLB, tsqlListB);
|
||||
|
||||
ui->table->showColumn(columnTSQLB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'p':
|
||||
if (dtcspList != Q_NULLPTR)
|
||||
|
@ -741,7 +722,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnDTCSPolarity, dtcspList);
|
||||
|
||||
ui->table->showColumn(columnDTCSPolarity);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'P':
|
||||
if (dtcspListB != Q_NULLPTR)
|
||||
|
@ -750,7 +731,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnDTCSPolarityB, dtcspListB);
|
||||
|
||||
ui->table->showColumn(columnDTCSPolarityB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'q':
|
||||
if (dtcsList != Q_NULLPTR)
|
||||
|
@ -759,7 +740,7 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnDTCS, dtcsList);
|
||||
|
||||
ui->table->showColumn(columnDTCS);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'Q':
|
||||
if (dtcsListB != Q_NULLPTR)
|
||||
|
@ -768,113 +749,111 @@ void memories::on_group_currentIndexChanged(int index)
|
|||
ui->table->setItemDelegateForColumn(columnDTCSB, dtcsList);
|
||||
|
||||
ui->table->showColumn(columnDTCSB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'r':
|
||||
if (dvsqlEditor != Q_NULLPTR)
|
||||
delete dvsqlEditor;
|
||||
dvsqlEditor = new tableEditor(QRegularExpression("[0-9]{0,2}"),ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnDVSquelch, dvsqlEditor);
|
||||
|
||||
if (dvsqlList != Q_NULLPTR)
|
||||
delete dvsqlList;
|
||||
dvsqlList = new tableCombobox(createModel(dvsqlModel, dvsql),false,ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnDVSquelch, dvsqlList);
|
||||
ui->table->showColumn(columnDVSquelch);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'R':
|
||||
if (dvsqlEditorB != Q_NULLPTR)
|
||||
delete dvsqlEditorB;
|
||||
dvsqlEditorB = new tableEditor(QRegularExpression("[0-9]{0,2}"),ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnDVSquelchB, dvsqlEditorB);
|
||||
|
||||
if (dvsqlListB != Q_NULLPTR)
|
||||
delete dvsqlListB;
|
||||
dvsqlListB = new tableCombobox(createModel(dvsqlModelB, dvsql),false,ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnDVSquelchB, dvsqlListB);
|
||||
ui->table->showColumn(columnDVSquelchB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 's':
|
||||
if (offsetEditor != Q_NULLPTR)
|
||||
delete offsetEditor;
|
||||
offsetEditor = new tableEditor(QRegularExpression("[0-9.]{0,7}"),ui->table);
|
||||
offsetEditor = new tableEditor("00.000000",ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnOffset, offsetEditor);
|
||||
|
||||
ui->table->showColumn(columnOffset);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'S':
|
||||
if (offsetEditorB != Q_NULLPTR)
|
||||
delete offsetEditorB;
|
||||
offsetEditorB = new tableEditor(QRegularExpression("[0-9.]{0,7}"),ui->table);
|
||||
offsetEditorB = new tableEditor("00.000000",ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnOffsetB, offsetEditorB);
|
||||
|
||||
ui->table->showColumn(columnOffsetB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 't':
|
||||
if (urEditor != Q_NULLPTR)
|
||||
delete urEditor;
|
||||
urEditor = new tableEditor(QRegularExpression("[0-9A-Z\\/\\ ]{0,8}$"),ui->table);
|
||||
urEditor = new tableEditor(">xxxxxxxx;_",ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnUR, urEditor);
|
||||
|
||||
ui->table->showColumn(columnUR);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'T':
|
||||
if (urEditorB != Q_NULLPTR)
|
||||
delete urEditorB;
|
||||
urEditorB = new tableEditor(QRegularExpression("[0-9A-Z\\/\\ ]{0,8}$"),ui->table);
|
||||
urEditorB = new tableEditor(">xxxxxxxx;_",ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnURB, urEditorB);
|
||||
|
||||
ui->table->showColumn(columnURB);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'u':
|
||||
if (r1Editor != Q_NULLPTR)
|
||||
delete r1Editor;
|
||||
r1Editor = new tableEditor(QRegularExpression("[0-9A-Z\\/\\ ]{0,8}$"),ui->table);
|
||||
r1Editor = new tableEditor(">xxxxxxxx;_",ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnR1, r1Editor);
|
||||
|
||||
ui->table->showColumn(columnR1);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'U':
|
||||
if (r1EditorB != Q_NULLPTR)
|
||||
delete r1EditorB;
|
||||
r1EditorB = new tableEditor(QRegularExpression("[0-9A-Z\\/\\ ]{0,8}$"),ui->table);
|
||||
r1EditorB = new tableEditor(">xxxxxxxx;_",ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnR1B, r1EditorB);
|
||||
|
||||
ui->table->showColumn(columnR1B);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'v':
|
||||
if (r2Editor != Q_NULLPTR)
|
||||
delete r2Editor;
|
||||
r2Editor = new tableEditor(QRegularExpression("[0-9A-Z\\/\\ ]{0,8}$"),ui->table);
|
||||
r2Editor = new tableEditor(">xxxxxxxx;_",ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnR2, r2Editor);
|
||||
|
||||
ui->table->showColumn(columnR2);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'V':
|
||||
if (r2EditorB != Q_NULLPTR)
|
||||
delete r2EditorB;
|
||||
r2EditorB = new tableEditor(QRegularExpression("[0-9A-Z\\/\\ ]{0,8}$"),ui->table);
|
||||
r2EditorB = new tableEditor(">xxxxxxxx;_",ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnR2B, r2EditorB);
|
||||
|
||||
ui->table->showColumn(columnR2B);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
case 'z':
|
||||
if (nameEditor != Q_NULLPTR)
|
||||
delete nameEditor;
|
||||
nameEditor = new tableEditor(QRegularExpression(QString("[0-9A-Za-z\\/\\ .-_^#]{0,%0}$").arg(parse.len)),ui->table);
|
||||
nameEditor = new tableEditor(QString("%0;_").arg("",parse.len,'x'),ui->table);
|
||||
ui->table->setItemDelegateForColumn(columnName, nameEditor);
|
||||
|
||||
ui->table->showColumn(columnName);
|
||||
visibleRows++;
|
||||
visibleColumns++;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (visibleRows > 15) {
|
||||
if (visibleColumns > 15) {
|
||||
ui->table->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents);
|
||||
}
|
||||
else
|
||||
|
@ -929,11 +908,12 @@ void memories::receiveMemory(memoryType mem)
|
|||
timeoutTimer.stop();
|
||||
ui->group->setEnabled(true);
|
||||
ui->loadingMemories->setVisible(false);
|
||||
ui->table->setEditTriggers(QAbstractItemView::AllEditTriggers);
|
||||
ui->table->setEditTriggers(QAbstractItemView::DoubleClicked);
|
||||
}
|
||||
|
||||
timeoutCount=0; // We have received a memory, so set the timeout to zero.
|
||||
int validData=0;
|
||||
|
||||
int validData=1; // We have 1 more row than will ever be received.
|
||||
|
||||
// Now process the incoming memory
|
||||
int row=-1;
|
||||
|
@ -954,7 +934,6 @@ void memories::receiveMemory(memoryType mem)
|
|||
ui->table->insertRow(ui->table->rowCount());
|
||||
row=ui->table->rowCount()-1;
|
||||
QPushButton* recall = new QPushButton("Recall");
|
||||
validData++;
|
||||
ui->table->setCellWidget(row,columnRecall,recall);
|
||||
connect(recall, &QPushButton::clicked, this,
|
||||
[=]() { qInfo() << "Recalling" << mem.channel; emit recallMemory((quint32((ui->group->currentData().toUInt() << 16) | mem.channel)));});
|
||||
|
@ -965,49 +944,10 @@ void memories::receiveMemory(memoryType mem)
|
|||
ui->table->item(row,columnNum)->setBackground(Qt::transparent);
|
||||
validData++;
|
||||
|
||||
validData += updateCombo(split,row,columnSplit,mem.split);
|
||||
|
||||
// Set every combobox to default value first:
|
||||
/*
|
||||
if (ui->table->item(row,columnSplit) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnSplit),split[0]);
|
||||
if (ui->table->item(row,columnScan) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnScan),scan[0]);
|
||||
if (ui->table->item(row,columnFilter) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnFilter),filters[0]);
|
||||
if (ui->table->item(row,columnFilterB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnFilterB),filters[0]);
|
||||
if (ui->table->item(row,columnData) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnData),dataModes[0]);
|
||||
if (ui->table->item(row,columnDuplex) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDuplex),duplexModes[0]);
|
||||
if (ui->table->item(row,columnDuplexB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDuplexB),duplexModes[0]);
|
||||
if (ui->table->item(row,columnToneMode) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnToneMode),toneModes[0]);
|
||||
if (ui->table->item(row,columnDSQL) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDSQL),dsql[0]);
|
||||
if (ui->table->item(row,columnTone) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnTone),tones[0]);
|
||||
if (ui->table->item(row,columnTSQL) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnTSQL),tones[0]);
|
||||
if (ui->table->item(row,columnDTCSPolarity) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDTCSPolarity),dtcsp[0]);
|
||||
if (ui->table->item(row,columnDTCS) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDTCS),dtcs[0]);
|
||||
if (ui->table->item(row,columnFilterB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnFilterB),filters[0]);
|
||||
if (ui->table->item(row,columnDataB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDataB),dataModes[0]);
|
||||
if (ui->table->item(row,columnToneModeB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnToneModeB),toneModes[0]);
|
||||
if (ui->table->item(row,columnDSQLB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDSQLB),dsql[0]);
|
||||
if (ui->table->item(row,columnToneB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnToneB),tones[0]);
|
||||
if (ui->table->item(row,columnTSQLB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnTSQLB),tones[0]);
|
||||
if (ui->table->item(row,columnDTCSPolarityB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDTCSPolarityB),dtcsp[0]);
|
||||
if (ui->table->item(row,columnDTCSB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDTCSB),dtcs[0]);
|
||||
*/
|
||||
validData += updateCombo(scan,row,columnScan,mem.scan);
|
||||
|
||||
for (int f=0;f<split.size();f++)
|
||||
{
|
||||
if (f==mem.split) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnSplit),split[f]);
|
||||
validData++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
for (int f=0;f<scan.size();f++)
|
||||
{
|
||||
if (f==mem.scan) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnScan),scan[f]);
|
||||
validData++;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnFrequency),QString::number(double(mem.frequency.Hz/1000000.0),'f',3));
|
||||
validData++;
|
||||
|
@ -1015,118 +955,54 @@ void memories::receiveMemory(memoryType mem)
|
|||
ui->table->model()->setData(ui->table->model()->index(row,columnFrequencyB),QString::number(double(mem.frequencyB.Hz/1000000.0),'f',3));
|
||||
validData++;
|
||||
|
||||
foreach (auto mode, rigCaps.modes){
|
||||
if (mode.reg == mem.mode) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnMode),mode.name);
|
||||
validData++;
|
||||
}
|
||||
if (mode.reg == mem.modeB) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnModeB),mode.name);
|
||||
validData++;
|
||||
}
|
||||
}
|
||||
|
||||
for (int f=0;f<dataModes.size();f++)
|
||||
for (int i=0;i<rigCaps.modes.size();i++)
|
||||
{
|
||||
if (f==mem.datamode) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnData),dataModes[f]);
|
||||
validData++;
|
||||
}
|
||||
if (f==mem.datamodeB) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDataB),dataModes[f]);
|
||||
validData++;
|
||||
}
|
||||
if (mem.mode == rigCaps.modes[i].reg)
|
||||
validData += updateCombo(modes,row,columnMode,i);
|
||||
|
||||
if (mem.modeB == rigCaps.modes[i].reg)
|
||||
validData += updateCombo(modes,row,columnModeB,i);
|
||||
}
|
||||
|
||||
for (int f=0;f<filters.size();f++)
|
||||
{
|
||||
if (f==mem.filter-1) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnFilter),filters[f]);
|
||||
validData++;
|
||||
}
|
||||
if (f==mem.filterB-1) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnFilterB),filters[f]);
|
||||
validData++;
|
||||
}
|
||||
}
|
||||
validData += updateCombo(dataModes,row,columnData,mem.datamode);
|
||||
|
||||
for (quint8 f=0;f<duplexModes.size();f++)
|
||||
{
|
||||
if (f==mem.duplex) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDuplex),duplexModes[f]);
|
||||
validData++;
|
||||
}
|
||||
if (f==mem.duplexB) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDuplexB),duplexModes[f]);
|
||||
validData++;
|
||||
}
|
||||
}
|
||||
validData += updateCombo(dataModes,row,columnDataB,mem.datamodeB);
|
||||
|
||||
for (int f=0;f<toneModes.size();f++)
|
||||
{
|
||||
if (f==mem.tonemode) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnToneMode),toneModes[f]);
|
||||
validData++;
|
||||
}
|
||||
if (f==mem.tonemodeB) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnToneModeB),toneModes[f]);
|
||||
validData++;
|
||||
}
|
||||
}
|
||||
validData += updateCombo(toneModes,row,columnToneMode,mem.tonemode);
|
||||
|
||||
for (int f=0;f<dsql.size();f++)
|
||||
{
|
||||
if (f==mem.dsql) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDSQL),dsql[f]);
|
||||
validData++;
|
||||
}
|
||||
if (f==mem.dsqlB) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDSQLB),dsql[f]);
|
||||
validData++;
|
||||
}
|
||||
}
|
||||
validData += updateCombo(toneModes,row,columnToneModeB,mem.tonemodeB);
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnTone),QString::number((float)mem.tone/10,'f',1));
|
||||
validData++;
|
||||
validData += updateCombo(filters,row,columnFilter,mem.filter-1);
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnToneB),QString::number((float)mem.toneB/10,'f',1));
|
||||
validData++;
|
||||
validData += updateCombo(filters,row,columnFilterB,mem.filterB-1);
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnTSQL),QString::number((float)mem.tsql/10,'f',1));
|
||||
validData++;
|
||||
validData += updateCombo(duplexModes,row,columnDuplex,mem.duplex);
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnTSQLB),QString::number((float)mem.tsqlB/10,'f',1));
|
||||
validData++;
|
||||
validData += updateCombo(duplexModes,row,columnDuplexB,mem.duplexB);
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDVSquelch),QString::number(mem.dvsql).rightJustified(2,'0'));
|
||||
validData++;
|
||||
validData += updateCombo(dsql,row,columnDSQL,mem.dsql);
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDVSquelchB),QString::number(mem.dvsqlB).rightJustified(2,'0'));
|
||||
validData++;
|
||||
validData += updateCombo(dsql,row,columnDSQLB,mem.dsqlB);
|
||||
|
||||
for (int f=0;f<dtcsp.size();f++)
|
||||
{
|
||||
if (f==mem.dtcsp) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDTCSPolarity),dtcsp[f]);
|
||||
validData++;
|
||||
}
|
||||
if (f==mem.dtcspB) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDTCSPolarityB),dtcsp[f]);
|
||||
validData++;
|
||||
}
|
||||
}
|
||||
validData += updateCombo(tones,row,columnTone,QString::number((float)mem.tone/10,'f',1));
|
||||
|
||||
for (int f=0;f<dtcs.size();f++)
|
||||
{
|
||||
if (dtcs[f].toInt()==mem.dtcs) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDTCS),dtcs[f]);
|
||||
validData++;
|
||||
}
|
||||
if (dtcs[f].toInt()==mem.dtcsB) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDTCSB),dtcs[f]);
|
||||
validData++;
|
||||
}
|
||||
}
|
||||
validData += updateCombo(tones,row,columnToneB,QString::number((float)mem.toneB/10,'f',1));
|
||||
|
||||
validData += updateCombo(tones,row,columnTSQL,QString::number((float)mem.tsql/10,'f',1));
|
||||
|
||||
validData += updateCombo(tones,row,columnTSQLB,QString::number((float)mem.tsqlB/10,'f',1));
|
||||
|
||||
validData += updateCombo(dvsql,row,columnDVSquelch,QString::number(mem.dvsql).rightJustified(2,'0'));
|
||||
|
||||
validData += updateCombo(dvsql,row,columnDVSquelchB,QString::number(mem.dvsqlB).rightJustified(2,'0'));
|
||||
|
||||
validData += updateCombo(dtcsp,row,columnDTCSPolarity,mem.dtcsp);
|
||||
|
||||
validData += updateCombo(dtcsp,row,columnDTCSPolarityB,mem.dtcspB);
|
||||
|
||||
validData += updateCombo(dtcs,row,columnDTCS,QString::number(mem.dtcs).rightJustified(3,'0'));
|
||||
|
||||
validData += updateCombo(dtcs,row,columnDTCSB,QString::number(mem.dtcsB).rightJustified(3,'0'));
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnOffset),QString::number(double(mem.duplexOffset.Hz/10000.0),'f',3));
|
||||
validData++;
|
||||
|
@ -1178,26 +1054,25 @@ void memories::receiveMemory(memoryType mem)
|
|||
if (checkASCII(mem.name)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnName),QString(mem.name));
|
||||
validData++;
|
||||
} else
|
||||
} else {
|
||||
qInfo() << "Invalid data in name";
|
||||
|
||||
}
|
||||
|
||||
ui->table->blockSignals(false);
|
||||
|
||||
int visibleColumns=0;
|
||||
|
||||
for (int i=0;i<ui->table->columnCount();i++)
|
||||
if (retries > 10)
|
||||
{
|
||||
if (!ui->table->isColumnHidden(i))
|
||||
visibleColumns++;
|
||||
retries=0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (validData < visibleColumns-1) {
|
||||
if (validData < visibleColumns) {
|
||||
qInfo(logRig()) << "Memory" << mem.channel << "Received valid data for" << validData << "columns, " << "expected" << visibleColumns << "requesting again";
|
||||
if (mem.sat)
|
||||
emit getSatMemory(mem.channel & 0xffff);
|
||||
else
|
||||
emit getMemory(quint32((ui->group->currentData().toInt())<<16) | (mem.channel & 0xffff));
|
||||
retries++;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1210,9 +1085,44 @@ void memories::receiveMemory(memoryType mem)
|
|||
|
||||
}
|
||||
|
||||
|
||||
int memories::updateCombo(QStringList& combo, int row, columns column, unsigned char data)
|
||||
{
|
||||
int ret=1;
|
||||
if (!ui->table->isColumnHidden(column) && combo.size() > data)
|
||||
{
|
||||
ui->table->model()->setData(ui->table->model()->index(row,column),combo[data]);
|
||||
}
|
||||
else if (!ui->table->isColumnHidden(column))
|
||||
{
|
||||
qInfo() << "Column" << column << "Hidden or invalid:" << data;
|
||||
ret=0;
|
||||
} else {
|
||||
ret=0;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
int memories::updateCombo(QStringList& combo, int row, columns column, QString data)
|
||||
{
|
||||
int ret=1;
|
||||
if (!ui->table->isColumnHidden(column) && combo.contains(data))
|
||||
{
|
||||
ui->table->model()->setData(ui->table->model()->index(row,column),data);
|
||||
}
|
||||
else if (!ui->table->isColumnHidden(column))
|
||||
{
|
||||
qInfo() << "Column" << column << "Hidden or invalid:" << data;
|
||||
ret=0;
|
||||
} else {
|
||||
ret=0;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool memories::checkASCII(QString str)
|
||||
{
|
||||
static QRegularExpression exp = QRegularExpression(QStringLiteral("[^\\x{0000}-\\x{007F}]"));
|
||||
static QRegularExpression exp = QRegularExpression(QStringLiteral("[^\\x{0020}-\\x{007E}]"));
|
||||
bool containsNonASCII = str.contains(exp);
|
||||
return !containsNonASCII;
|
||||
}
|
||||
|
@ -1234,7 +1144,7 @@ void memories::timeout()
|
|||
ui->loadingMemories->setVisible(false);
|
||||
timeoutTimer.stop();
|
||||
ui->group->setEnabled(true);
|
||||
ui->table->setEditTriggers(QAbstractItemView::AllEditTriggers);
|
||||
ui->table->setEditTriggers(QAbstractItemView::DoubleClicked);
|
||||
|
||||
QMessageBox::information(this,"Timeout", "Timeout receiving memories, check rig connection", QMessageBox::Ok);
|
||||
}
|
||||
|
|
15
memories.h
15
memories.h
|
@ -65,6 +65,8 @@ private:
|
|||
quint32 lastMemoryRequested=0;
|
||||
QTimer timeoutTimer;
|
||||
int timeoutCount=0;
|
||||
int retries=0;
|
||||
int visibleColumns=1;
|
||||
|
||||
bool checkASCII(QString str);
|
||||
|
||||
|
@ -82,6 +84,7 @@ private:
|
|||
QStringList dtcs;
|
||||
QStringList dtcsp;
|
||||
QStringList dsql;
|
||||
QStringList dvsql;
|
||||
|
||||
/*
|
||||
columnFrequencyB,
|
||||
|
@ -112,6 +115,7 @@ private:
|
|||
QStandardItemModel* tsqlModel = Q_NULLPTR;
|
||||
QStandardItemModel* dtcspModel = Q_NULLPTR;
|
||||
QStandardItemModel* dtcsModel = Q_NULLPTR;
|
||||
QStandardItemModel* dvsqlModel = Q_NULLPTR;
|
||||
|
||||
QStandardItemModel* vfoModelB = Q_NULLPTR;
|
||||
QStandardItemModel* modesModelB = Q_NULLPTR;
|
||||
|
@ -124,6 +128,7 @@ private:
|
|||
QStandardItemModel* dtcspModelB = Q_NULLPTR;
|
||||
QStandardItemModel* duplexModelB = Q_NULLPTR;
|
||||
QStandardItemModel* dtcsModelB = Q_NULLPTR;
|
||||
QStandardItemModel* dvsqlModelB = Q_NULLPTR;
|
||||
|
||||
|
||||
tableEditor* numEditor = Q_NULLPTR;
|
||||
|
@ -143,7 +148,7 @@ private:
|
|||
tableCombobox* dtcspList = Q_NULLPTR;
|
||||
tableCombobox* modesList = Q_NULLPTR;
|
||||
tableEditor* offsetEditor = Q_NULLPTR;
|
||||
tableEditor* dvsqlEditor = Q_NULLPTR;
|
||||
tableCombobox* dvsqlList = Q_NULLPTR;
|
||||
tableEditor* urEditor = Q_NULLPTR;
|
||||
tableEditor* r1Editor = Q_NULLPTR;
|
||||
tableEditor* r2Editor = Q_NULLPTR;
|
||||
|
@ -161,7 +166,7 @@ private:
|
|||
tableCombobox* modesListB = Q_NULLPTR;
|
||||
tableCombobox* duplexListB = Q_NULLPTR;
|
||||
tableEditor* offsetEditorB = Q_NULLPTR;
|
||||
tableEditor* dvsqlEditorB = Q_NULLPTR;
|
||||
tableCombobox* dvsqlListB = Q_NULLPTR;
|
||||
tableEditor* urEditorB = Q_NULLPTR;
|
||||
tableEditor* r1EditorB = Q_NULLPTR;
|
||||
tableEditor* r2EditorB = Q_NULLPTR;
|
||||
|
@ -211,8 +216,12 @@ private:
|
|||
columnURB,
|
||||
columnR1B,
|
||||
columnR2B,
|
||||
totalColumns
|
||||
totalColumns
|
||||
};
|
||||
|
||||
int updateCombo(QStringList& combo, int row, columns column, unsigned char data);
|
||||
int updateCombo(QStringList& combo, int row, columns column, QString data);
|
||||
|
||||
};
|
||||
|
||||
#endif // MEMORIES_H
|
||||
|
|
|
@ -900,7 +900,6 @@ void rigCommander::setTuningStep(unsigned char step)
|
|||
{
|
||||
payload.append(static_cast<unsigned char>(step));
|
||||
prepDataAndSend(payload);
|
||||
qInfo() << "Setting tuning step to" << step;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1701,7 +1700,7 @@ void rigCommander::getBandStackReg(char band, char regCode)
|
|||
QByteArray payload;
|
||||
if (getCommand(funcBandStackReg,payload,band))
|
||||
{
|
||||
payload.append(band); // [01 through 11]
|
||||
payload.append(band);
|
||||
payload.append(regCode); // [01...03]. 01 = latest, 03 = oldest
|
||||
prepDataAndSend(payload);
|
||||
}
|
||||
|
@ -4675,7 +4674,7 @@ void rigCommander::determineRigCaps()
|
|||
funcs func = funcsLookup.find(settings->value("Type", "").toString().toUpper()).value();
|
||||
rigCaps.commands.insert(func, funcType(func, funcString[int(func)],
|
||||
QByteArray::fromHex(settings->value("String", "").toString().toUtf8()),
|
||||
settings->value("Min", 0).toInt(), settings->value("Max", 0).toInt()));
|
||||
settings->value("Min", 0).toString().toInt(), settings->value("Max", 0).toString().toInt()));
|
||||
|
||||
rigCaps.commandsReverse.insert(QByteArray::fromHex(settings->value("String", "").toString().toUtf8()),func);
|
||||
} else {
|
||||
|
@ -4694,7 +4693,7 @@ void rigCommander::determineRigCaps()
|
|||
{
|
||||
settings->setArrayIndex(c);
|
||||
rigCaps.modes.push_back(mode_info(mode_kind(settings->value("Num", 0).toUInt()),
|
||||
settings->value("Reg", 0).toString().toUInt(nullptr,16), settings->value("Name", "").toString(), settings->value("BW", 0).toBool()));
|
||||
settings->value("Reg", 0).toString().toUInt(), settings->value("Name", "").toString(), settings->value("BW", 0).toBool()));
|
||||
}
|
||||
settings->endArray();
|
||||
}
|
||||
|
@ -4708,7 +4707,7 @@ void rigCommander::determineRigCaps()
|
|||
{
|
||||
settings->setArrayIndex(c);
|
||||
rigCaps.scopeCenterSpans.push_back(
|
||||
centerSpanData(centerSpansType(settings->value("Num", 0).toInt()), settings->value("Name", "").toString(), settings->value("Freq", 0).toUInt()));
|
||||
centerSpanData(centerSpansType(settings->value("Num", 0).toString().toUInt()), settings->value("Name", "").toString(), settings->value("Freq", 0).toUInt()));
|
||||
}
|
||||
settings->endArray();
|
||||
}
|
||||
|
@ -4721,7 +4720,7 @@ void rigCommander::determineRigCaps()
|
|||
for (int c = 0; c < numInputs; c++)
|
||||
{
|
||||
settings->setArrayIndex(c);
|
||||
rigCaps.inputs.append(rigInput((inputTypes)settings->value("Num", 0).toInt(),settings->value("Name", "").toString()));
|
||||
rigCaps.inputs.append(rigInput((inputTypes)settings->value("Num", 0).toString().toUInt(nullptr,16),settings->value("Name", "").toString()));
|
||||
}
|
||||
settings->endArray();
|
||||
}
|
||||
|
@ -4734,7 +4733,7 @@ void rigCommander::determineRigCaps()
|
|||
for (int c = 0; c < numSteps; c++)
|
||||
{
|
||||
settings->setArrayIndex(c);
|
||||
rigCaps.steps.push_back(stepType(settings->value("Num", 0).toInt(),settings->value("Name", "").toString(),settings->value("Hz", 0ULL).toULongLong()));
|
||||
rigCaps.steps.push_back(stepType(settings->value("Num", 0).toString().toUInt(),settings->value("Name", "").toString(),settings->value("Hz", 0ULL).toULongLong()));
|
||||
}
|
||||
settings->endArray();
|
||||
}
|
||||
|
@ -4747,7 +4746,7 @@ void rigCommander::determineRigCaps()
|
|||
for (int c = 0; c < numPreamps; c++)
|
||||
{
|
||||
settings->setArrayIndex(c);
|
||||
rigCaps.preamps.push_back((unsigned char)settings->value("Num", 0).toInt());
|
||||
rigCaps.preamps.push_back(genericType(settings->value("Num", 0).toString().toUInt(), settings->value("Name", 0).toString()));
|
||||
}
|
||||
settings->endArray();
|
||||
}
|
||||
|
@ -4760,7 +4759,7 @@ void rigCommander::determineRigCaps()
|
|||
for (int c = 0; c < numAntennas; c++)
|
||||
{
|
||||
settings->setArrayIndex(c);
|
||||
rigCaps.antennas.push_back((unsigned char)settings->value("Num", 0).toInt());
|
||||
rigCaps.antennas.push_back(genericType(settings->value("Num", 0).toString().toUInt(), settings->value("Name", 0).toString()));
|
||||
}
|
||||
settings->endArray();
|
||||
}
|
||||
|
@ -4773,7 +4772,7 @@ void rigCommander::determineRigCaps()
|
|||
for (int c = 0; c < numAttenuators; c++)
|
||||
{
|
||||
settings->setArrayIndex(c);
|
||||
rigCaps.attenuators.push_back((unsigned char)settings->value("dB", 0).toString().toUInt(nullptr,16)); // Don't really care if it fails!
|
||||
rigCaps.attenuators.push_back((unsigned char)settings->value("dB", 0).toUInt());
|
||||
}
|
||||
settings->endArray();
|
||||
}
|
||||
|
@ -4786,7 +4785,7 @@ void rigCommander::determineRigCaps()
|
|||
for (int c = 0; c < numFilters; c++)
|
||||
{
|
||||
settings->setArrayIndex(c);
|
||||
rigCaps.filters.push_back(filterType((unsigned char)settings->value("Num", 0).toInt(), settings->value("Name", "").toString(), settings->value("Modes", 0).toUInt()));
|
||||
rigCaps.filters.push_back(filterType(settings->value("Num", 0).toString().toUInt(), settings->value("Name", "").toString(), settings->value("Modes", 0).toUInt()));
|
||||
}
|
||||
settings->endArray();
|
||||
}
|
||||
|
@ -4808,7 +4807,7 @@ void rigCommander::determineRigCaps()
|
|||
|
||||
rigCaps.bands.push_back(bandType(band,start,end,range,memGroup));
|
||||
rigCaps.bsr[band] = bsr;
|
||||
qInfo(logRig()) << "Adding Band " << band << "Start" << start << "End" << end << "BSR" << bsr;
|
||||
qInfo(logRig()) << "Adding Band " << band << "Start" << start << "End" << end << "BSR" << QString::number(bsr,16);
|
||||
}
|
||||
settings->endArray();
|
||||
}
|
||||
|
|
|
@ -127,8 +127,8 @@ void rigCreator::loadRigFile(QString file)
|
|||
ui->commands->insertRow(ui->commands->rowCount());
|
||||
ui->commands->model()->setData(ui->commands->model()->index(c,0),settings->value("Type", "").toString());
|
||||
ui->commands->model()->setData(ui->commands->model()->index(c,1),settings->value("String", "").toString());
|
||||
ui->commands->model()->setData(ui->commands->model()->index(c,2),settings->value("Min", 0).toInt());
|
||||
ui->commands->model()->setData(ui->commands->model()->index(c,3),settings->value("Max", 0).toInt());
|
||||
ui->commands->model()->setData(ui->commands->model()->index(c,2),QString::number(settings->value("Min", 0).toInt(),16));
|
||||
ui->commands->model()->setData(ui->commands->model()->index(c,3),QString::number(settings->value("Max", 0).toInt(),16));
|
||||
|
||||
}
|
||||
settings->endArray();
|
||||
|
@ -145,7 +145,7 @@ void rigCreator::loadRigFile(QString file)
|
|||
{
|
||||
settings->setArrayIndex(c);
|
||||
ui->spans->insertRow(ui->spans->rowCount());
|
||||
ui->spans->model()->setData(ui->spans->model()->index(c,0),QString::number(settings->value("Num", 0).toInt()).rightJustified(2,'0'));
|
||||
ui->spans->model()->setData(ui->spans->model()->index(c,0),QString::number(settings->value("Num", 0).toUInt()).rightJustified(2,'0'));
|
||||
ui->spans->model()->setData(ui->spans->model()->index(c,1),settings->value("Name", "").toString());
|
||||
ui->spans->model()->setData(ui->spans->model()->index(c,2),settings->value("Freq", 0U).toUInt());
|
||||
|
||||
|
@ -164,7 +164,7 @@ void rigCreator::loadRigFile(QString file)
|
|||
{
|
||||
settings->setArrayIndex(c);
|
||||
ui->inputs->insertRow(ui->inputs->rowCount());
|
||||
ui->inputs->model()->setData(ui->inputs->model()->index(c,0),QString::number(settings->value("Num", 0).toInt()).rightJustified(2,'0'));
|
||||
ui->inputs->model()->setData(ui->inputs->model()->index(c,0),QString::number(settings->value("Num", 0).toUInt(),16).rightJustified(2,'0'));
|
||||
ui->inputs->model()->setData(ui->inputs->model()->index(c,1),settings->value("Name", "").toString());
|
||||
|
||||
}
|
||||
|
@ -182,8 +182,8 @@ void rigCreator::loadRigFile(QString file)
|
|||
{
|
||||
settings->setArrayIndex(c);
|
||||
ui->bands->insertRow(ui->bands->rowCount());
|
||||
ui->bands->model()->setData(ui->bands->model()->index(c,0),QString::number(settings->value("Num", 0).toInt()).rightJustified(2,'0'));
|
||||
ui->bands->model()->setData(ui->bands->model()->index(c,1),settings->value("BSR", 0).toString());
|
||||
ui->bands->model()->setData(ui->bands->model()->index(c,0),QString::number(settings->value("Num", 0).toUInt()).rightJustified(2,'0'));
|
||||
ui->bands->model()->setData(ui->bands->model()->index(c,1),QString::number(settings->value("BSR", 0).toUInt(),16).rightJustified(2,'0'));
|
||||
ui->bands->model()->setData(ui->bands->model()->index(c,2),settings->value("Name", "").toString());
|
||||
ui->bands->model()->setData(ui->bands->model()->index(c,3),settings->value("Start", 0ULL).toString());
|
||||
ui->bands->model()->setData(ui->bands->model()->index(c,4),settings->value("End", 0ULL).toString());
|
||||
|
@ -204,8 +204,8 @@ void rigCreator::loadRigFile(QString file)
|
|||
{
|
||||
settings->setArrayIndex(c);
|
||||
ui->modes->insertRow(ui->modes->rowCount());
|
||||
ui->modes->model()->setData(ui->modes->model()->index(c,0),QString::number(settings->value("Num", 0).toInt()).rightJustified(2,'0'));
|
||||
ui->modes->model()->setData(ui->modes->model()->index(c,1),QString::number(settings->value("Reg", 0).toInt()).rightJustified(2,'0'));
|
||||
ui->modes->model()->setData(ui->modes->model()->index(c,0),QString::number(settings->value("Num", 0).toUInt()).rightJustified(2,'0'));
|
||||
ui->modes->model()->setData(ui->modes->model()->index(c,1),QString::number(settings->value("Reg", 0).toUInt(),16).rightJustified(2,'0'));
|
||||
ui->modes->model()->setData(ui->modes->model()->index(c,2),settings->value("Name", "").toString());
|
||||
ui->modes->model()->setData(ui->modes->model()->index(c,3),settings->value("BW", 0).toString().toInt());
|
||||
}
|
||||
|
@ -223,7 +223,7 @@ void rigCreator::loadRigFile(QString file)
|
|||
{
|
||||
settings->setArrayIndex(c);
|
||||
ui->attenuators->insertRow(ui->attenuators->rowCount());
|
||||
ui->attenuators->model()->setData(ui->attenuators->model()->index(c,0),QString::number(settings->value("dB", 0).toInt()).rightJustified(2,'0'));
|
||||
ui->attenuators->model()->setData(ui->attenuators->model()->index(c,0),QString::number(settings->value("dB", 0).toUInt(),16).rightJustified(2,'0'));
|
||||
}
|
||||
settings->endArray();
|
||||
}
|
||||
|
@ -239,7 +239,7 @@ void rigCreator::loadRigFile(QString file)
|
|||
{
|
||||
settings->setArrayIndex(c);
|
||||
ui->preamps->insertRow(ui->preamps->rowCount());
|
||||
ui->preamps->model()->setData(ui->preamps->model()->index(c,0),QString::number(settings->value("Num", 0).toInt()).rightJustified(2,'0'));
|
||||
ui->preamps->model()->setData(ui->preamps->model()->index(c,0),QString::number(settings->value("Num", 0).toUInt(),16).rightJustified(2,'0'));
|
||||
ui->preamps->model()->setData(ui->preamps->model()->index(c,1),settings->value("Name", "").toString());
|
||||
}
|
||||
settings->endArray();
|
||||
|
@ -256,7 +256,7 @@ void rigCreator::loadRigFile(QString file)
|
|||
{
|
||||
settings->setArrayIndex(c);
|
||||
ui->antennas->insertRow(ui->antennas->rowCount());
|
||||
ui->antennas->model()->setData(ui->antennas->model()->index(c,0),settings->value("Num", 0).toString());
|
||||
ui->antennas->model()->setData(ui->antennas->model()->index(c,0),QString::number(settings->value("Num", 0).toUInt(),16).rightJustified(2,'0'));
|
||||
ui->antennas->model()->setData(ui->antennas->model()->index(c,1),settings->value("Name", "").toString());
|
||||
}
|
||||
settings->endArray();
|
||||
|
@ -273,7 +273,7 @@ void rigCreator::loadRigFile(QString file)
|
|||
{
|
||||
settings->setArrayIndex(c);
|
||||
ui->tuningSteps->insertRow(ui->tuningSteps->rowCount());
|
||||
ui->tuningSteps->model()->setData(ui->tuningSteps->model()->index(c,0),QString::number(settings->value("Num", 0ULL).toInt()).rightJustified(2,'0'));
|
||||
ui->tuningSteps->model()->setData(ui->tuningSteps->model()->index(c,0),QString::number(settings->value("Num", 0).toUInt(),16).rightJustified(2,'0'));
|
||||
ui->tuningSteps->model()->setData(ui->tuningSteps->model()->index(c,1),settings->value("Name", "").toString());
|
||||
ui->tuningSteps->model()->setData(ui->tuningSteps->model()->index(c,2),settings->value("Hz", 0ULL).toString());
|
||||
}
|
||||
|
@ -333,8 +333,6 @@ void rigCreator::on_saveFile_clicked(bool clicked)
|
|||
void rigCreator::saveRigFile(QString file)
|
||||
{
|
||||
|
||||
bool ok=false; // Used for number conversions.
|
||||
|
||||
QSettings* settings = new QSettings(file, QSettings::Format::IniFormat);
|
||||
|
||||
settings->setValue("Version", QString(WFVIEW_VERSION));
|
||||
|
@ -344,7 +342,7 @@ void rigCreator::saveRigFile(QString file)
|
|||
|
||||
settings->setValue("Manufacturer",ui->manufacturer->currentText());
|
||||
settings->setValue("Model",ui->model->text());
|
||||
settings->setValue("CIVAddress",ui->civAddress->text().toInt(&ok,16));
|
||||
settings->setValue("CIVAddress",ui->civAddress->text().toInt(nullptr,16));
|
||||
settings->setValue("RigCtlDModel",ui->rigctldModel->text().toInt());
|
||||
settings->setValue("SpectrumSeqMax",ui->seqMax->text().toInt());
|
||||
settings->setValue("SpectrumAmpMax",ui->ampMax->text().toInt());
|
||||
|
@ -372,8 +370,8 @@ void rigCreator::saveRigFile(QString file)
|
|||
settings->setArrayIndex(n);
|
||||
settings->setValue("Type", (ui->commands->item(n,0) == NULL) ? "" : ui->commands->item(n,0)->text());
|
||||
settings->setValue("String", (ui->commands->item(n,1) == NULL) ? "" : ui->commands->item(n,1)->text());
|
||||
settings->setValue("Min", (ui->commands->item(n,2) == NULL) ? 0 : ui->commands->item(n,2)->text().toInt());
|
||||
settings->setValue("Max", (ui->commands->item(n,3) == NULL) ? 0 : ui->commands->item(n,3)->text().toInt());
|
||||
settings->setValue("Min", (ui->commands->item(n,2) == NULL) ? 0 : ui->commands->item(n,2)->text().toInt(nullptr,16));
|
||||
settings->setValue("Max", (ui->commands->item(n,3) == NULL) ? 0 : ui->commands->item(n,3)->text().toInt(nullptr,16));
|
||||
}
|
||||
settings->endArray();
|
||||
|
||||
|
@ -383,7 +381,7 @@ void rigCreator::saveRigFile(QString file)
|
|||
for (int n = 0; n<ui->spans->rowCount();n++)
|
||||
{
|
||||
settings->setArrayIndex(n);
|
||||
settings->setValue("Num", (ui->spans->item(n,0) == NULL) ? 0 : ui->spans->item(n,0)->text().toInt());
|
||||
settings->setValue("Num", (ui->spans->item(n,0) == NULL) ? 0 : ui->spans->item(n,0)->text().toUInt(nullptr,16));
|
||||
settings->setValue("Name",(ui->spans->item(n,1) == NULL) ? "" : ui->spans->item(n,1)->text());
|
||||
settings->setValue("Freq",(ui->spans->item(n,2) == NULL) ? 0U : ui->spans->item(n,2)->text().toUInt());
|
||||
}
|
||||
|
@ -395,7 +393,7 @@ void rigCreator::saveRigFile(QString file)
|
|||
for (int n = 0; n<ui->inputs->rowCount();n++)
|
||||
{
|
||||
settings->setArrayIndex(n);
|
||||
settings->setValue("Num", (ui->inputs->item(n,0) == NULL) ? 0 : ui->inputs->item(n,0)->text().toInt());
|
||||
settings->setValue("Num", (ui->inputs->item(n,0) == NULL) ? 0 : ui->inputs->item(n,0)->text().toUInt(nullptr,16));
|
||||
settings->setValue("Name", (ui->inputs->item(n,1) == NULL) ? "" : ui->inputs->item(n,1)->text());
|
||||
}
|
||||
settings->endArray();
|
||||
|
@ -405,8 +403,8 @@ void rigCreator::saveRigFile(QString file)
|
|||
for (int n = 0; n<ui->bands->rowCount();n++)
|
||||
{
|
||||
settings->setArrayIndex(n);
|
||||
settings->setValue("Num", (ui->bands->item(n,0) == NULL) ? 0 : ui->bands->item(n,0)->text().toInt() );
|
||||
settings->setValue("BSR", (ui->bands->item(n,1) == NULL) ? 0 : ui->bands->item(n,1)->text().toInt() );
|
||||
settings->setValue("Num", (ui->bands->item(n,0) == NULL) ? 0 : ui->bands->item(n,0)->text().toUInt() );
|
||||
settings->setValue("BSR", (ui->bands->item(n,1) == NULL) ? 0 : ui->bands->item(n,1)->text().toUInt(nullptr,16) );
|
||||
settings->setValue("Name", (ui->bands->item(n,2) == NULL) ? "" : ui->bands->item(n,2)->text());
|
||||
settings->setValue("Start", (ui->bands->item(n,3) == NULL) ? 0ULL : ui->bands->item(n,3)->text().toULongLong() );
|
||||
settings->setValue("End", (ui->bands->item(n,4) == NULL) ? 0ULL : ui->bands->item(n,4)->text().toULongLong() );
|
||||
|
@ -421,8 +419,8 @@ void rigCreator::saveRigFile(QString file)
|
|||
for (int n = 0; n<ui->modes->rowCount();n++)
|
||||
{
|
||||
settings->setArrayIndex(n);
|
||||
settings->setValue("Num", (ui->modes->item(n,0) == NULL) ? 0 : ui->modes->item(n,0)->text().toInt());
|
||||
settings->setValue("Reg", (ui->modes->item(n,1) == NULL) ? 0 : ui->modes->item(n,1)->text().toInt());
|
||||
settings->setValue("Num", (ui->modes->item(n,0) == NULL) ? 0 : ui->modes->item(n,0)->text().toUInt());
|
||||
settings->setValue("Reg", (ui->modes->item(n,1) == NULL) ? 0 : ui->modes->item(n,1)->text().toInt(nullptr,16));
|
||||
settings->setValue("Name",(ui->modes->item(n,2) == NULL) ? "" : ui->modes->item(n,2)->text());
|
||||
settings->setValue("BW",(ui->modes->item(n,3) == NULL) ? 0 : ui->modes->item(n,3)->text().toInt());
|
||||
}
|
||||
|
@ -433,7 +431,7 @@ void rigCreator::saveRigFile(QString file)
|
|||
for (int n = 0; n<ui->attenuators->rowCount();n++)
|
||||
{
|
||||
settings->setArrayIndex(n);
|
||||
settings->setValue("dB",(ui->attenuators->item(n,0) == NULL) ? 0 : ui->attenuators->item(n,0)->text().toInt());
|
||||
settings->setValue("dB",(ui->attenuators->item(n,0) == NULL) ? 0 : ui->attenuators->item(n,0)->text().toUInt(nullptr,16));
|
||||
}
|
||||
settings->endArray();
|
||||
|
||||
|
@ -442,7 +440,7 @@ void rigCreator::saveRigFile(QString file)
|
|||
for (int n = 0; n<ui->preamps->rowCount();n++)
|
||||
{
|
||||
settings->setArrayIndex(n);
|
||||
settings->setValue("Num",(ui->preamps->item(n,0) == NULL) ? 0 : ui->preamps->item(n,0)->text().toInt());
|
||||
settings->setValue("Num",(ui->preamps->item(n,0) == NULL) ? 0 : ui->preamps->item(n,0)->text().toUInt(nullptr,16));
|
||||
settings->setValue("Name",(ui->preamps->item(n,1) == NULL) ? "" : ui->preamps->item(n,1)->text());
|
||||
}
|
||||
settings->endArray();
|
||||
|
@ -452,7 +450,7 @@ void rigCreator::saveRigFile(QString file)
|
|||
for (int n = 0; n<ui->antennas->rowCount();n++)
|
||||
{
|
||||
settings->setArrayIndex(n);
|
||||
settings->setValue("Num",(ui->antennas->item(n,0) == NULL) ? 0 : ui->antennas->item(n,0)->text().toInt());
|
||||
settings->setValue("Num",(ui->antennas->item(n,0) == NULL) ? 0 : ui->antennas->item(n,0)->text().toUInt(nullptr,16));
|
||||
settings->setValue("Name",(ui->antennas->item(n,1) == NULL) ? "" : ui->antennas->item(n,1)->text());
|
||||
}
|
||||
settings->endArray();
|
||||
|
@ -462,7 +460,7 @@ void rigCreator::saveRigFile(QString file)
|
|||
for (int n = 0; n<ui->tuningSteps->rowCount();n++)
|
||||
{
|
||||
settings->setArrayIndex(n);
|
||||
settings->setValue("Num",(ui->tuningSteps->item(n,0) == NULL) ? 0 : ui->tuningSteps->item(n,0)->text().toInt());
|
||||
settings->setValue("Num",(ui->tuningSteps->item(n,0) == NULL) ? 0 : ui->tuningSteps->item(n,0)->text().toUInt(nullptr,16));
|
||||
settings->setValue("Name",(ui->tuningSteps->item(n,1) == NULL) ? "" : ui->tuningSteps->item(n,1)->text());
|
||||
settings->setValue("Hz",(ui->tuningSteps->item(n,2) == NULL) ? 0ULL : ui->tuningSteps->item(n,2)->text().toULongLong());
|
||||
}
|
||||
|
@ -473,9 +471,9 @@ void rigCreator::saveRigFile(QString file)
|
|||
for (int n = 0; n<ui->filters->rowCount();n++)
|
||||
{
|
||||
settings->setArrayIndex(n);
|
||||
settings->setValue("Num",(ui->filters->item(n,0) == NULL) ? 0 : ui->filters->item(n,0)->text().toInt());
|
||||
settings->setValue("Num",(ui->filters->item(n,0) == NULL) ? 0 : ui->filters->item(n,0)->text().toUInt(nullptr,16));
|
||||
settings->setValue("Name",(ui->filters->item(n,1) == NULL) ? "" : ui->filters->item(n,1)->text());
|
||||
settings->setValue("Modes",(ui->filters->item(n,2) == NULL) ? 0xffffffff : ui->filters->item(n,2)->text().toUInt(&ok,16));
|
||||
settings->setValue("Modes",(ui->filters->item(n,2) == NULL) ? 0xffffffff : ui->filters->item(n,2)->text().toUInt(nullptr,16));
|
||||
}
|
||||
settings->endArray();
|
||||
|
||||
|
|
12
rigctld.cpp
12
rigctld.cpp
|
@ -1345,11 +1345,11 @@ void rigCtlClient::socketReadyRead()
|
|||
response.append("0");
|
||||
QString preamps="";
|
||||
if(rigCaps.commands.contains(funcPreamp)) {
|
||||
for (quint8 pre : rigCaps.preamps)
|
||||
foreach (auto pre, rigCaps.preamps)
|
||||
{
|
||||
if (pre == 0)
|
||||
if (pre.num == 0)
|
||||
continue;
|
||||
preamps.append(QString("%1 ").arg(pre*10));
|
||||
preamps.append(QString("%1 ").arg(pre.num*10,0,16));
|
||||
}
|
||||
if (preamps.endsWith(" "))
|
||||
preamps.chop(1);
|
||||
|
@ -1361,7 +1361,7 @@ void rigCtlClient::socketReadyRead()
|
|||
|
||||
QString attens = "";
|
||||
if(rigCaps.commands.contains(funcAttenuator)) {
|
||||
for (quint8 att : rigCaps.attenuators)
|
||||
for (auto att : rigCaps.attenuators)
|
||||
{
|
||||
if (att == 0)
|
||||
continue;
|
||||
|
@ -1716,9 +1716,9 @@ quint8 rigCtlClient::getMode(QString modeString) {
|
|||
quint8 rigCtlClient::getAntennas()
|
||||
{
|
||||
quint8 ant=0;
|
||||
for (quint8 i : rigCaps.antennas)
|
||||
for (auto i : rigCaps.antennas)
|
||||
{
|
||||
ant |= 1<<i;
|
||||
ant |= 1<<i.num;
|
||||
}
|
||||
return ant;
|
||||
}
|
||||
|
|
|
@ -146,7 +146,13 @@ struct filterType {
|
|||
unsigned int modes;
|
||||
};
|
||||
|
||||
|
||||
struct genericType {
|
||||
genericType() {}
|
||||
genericType(unsigned char num, QString name) :
|
||||
num(num), name(name) {}
|
||||
unsigned char num;
|
||||
QString name;
|
||||
};
|
||||
|
||||
model_kind determineRadioModel(unsigned char rigID);
|
||||
|
||||
|
@ -204,8 +210,8 @@ struct rigCapabilities {
|
|||
QHash<QByteArray,funcs> commandsReverse;
|
||||
|
||||
std::vector <unsigned char> attenuators;
|
||||
std::vector <unsigned char> preamps;
|
||||
std::vector <unsigned char> antennas;
|
||||
std::vector <genericType> preamps;
|
||||
std::vector <genericType> antennas;
|
||||
std::vector <filterType> filters;
|
||||
std::vector <centerSpanData> scopeCenterSpans;
|
||||
std::vector <bandType> bands;
|
||||
|
|
|
@ -56,7 +56,7 @@ void tableWidget::mouseReleaseEvent(QMouseEvent *event)
|
|||
}
|
||||
|
||||
|
||||
tableEditor::tableEditor(QRegularExpression validExp, QObject *parent)
|
||||
tableEditor::tableEditor(QString validExp, QObject *parent)
|
||||
: QItemDelegate(parent), validExp(validExp)
|
||||
{
|
||||
}
|
||||
|
@ -65,9 +65,9 @@ QWidget* tableEditor::createEditor(QWidget *parent, const QStyleOptionViewItem &
|
|||
Q_UNUSED(index)
|
||||
Q_UNUSED(option)
|
||||
edit = new QLineEdit(parent);
|
||||
if (validExp.isValid())
|
||||
if (!validExp.isEmpty())
|
||||
{
|
||||
edit->setValidator(new QRegularExpressionValidator(validExp,edit));
|
||||
edit->setInputMask(validExp);
|
||||
}
|
||||
edit->setFrame(false);
|
||||
return edit ;
|
||||
|
|
|
@ -33,12 +33,11 @@ class tableEditor : public QItemDelegate
|
|||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit tableEditor(QRegularExpression validExp, QObject *parent = 0);
|
||||
explicit tableEditor(QString validExp = "", QObject *parent = 0);
|
||||
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override;
|
||||
|
||||
mutable QLineEdit *edit;
|
||||
mutable QRegularExpressionValidator *valid;
|
||||
QRegularExpression validExp;
|
||||
QString validExp;
|
||||
};
|
||||
|
||||
|
||||
|
|
40
wfmain.cpp
40
wfmain.cpp
|
@ -5007,7 +5007,7 @@ void wfmain::receiveRigID(rigCapabilities rigCaps)
|
|||
ui->tuningStepCombo->addItem(s.name, s.hz);
|
||||
}
|
||||
|
||||
//ui->tuningStepCombo->setCurrentIndex(2);
|
||||
ui->tuningStepCombo->setCurrentIndex(2);
|
||||
ui->tuningStepCombo->blockSignals(false);
|
||||
|
||||
|
||||
|
@ -5020,7 +5020,6 @@ void wfmain::receiveRigID(rigCapabilities rigCaps)
|
|||
ui->satOpsBtn->setDisabled(true);
|
||||
ui->adjRefBtn->setDisabled(true);
|
||||
}
|
||||
QString inName;
|
||||
// Clear input combos before adding known inputs.
|
||||
ui->modInputCombo->clear();
|
||||
ui->modInputData1Combo->clear();
|
||||
|
@ -5053,10 +5052,9 @@ void wfmain::receiveRigID(rigCapabilities rigCaps)
|
|||
if(rigCaps.commands.contains(funcAttenuator))
|
||||
{
|
||||
ui->attSelCombo->setDisabled(false);
|
||||
for(unsigned int i=0; i < rigCaps.attenuators.size(); i++)
|
||||
foreach (auto att, rigCaps.attenuators)
|
||||
{
|
||||
inName = (i==0)?QString("0dB"):QString("-%1 dB").arg(rigCaps.attenuators.at(i), 0, 16);
|
||||
ui->attSelCombo->addItem(inName, rigCaps.attenuators.at(i));
|
||||
ui->attSelCombo->addItem(((att == 0) ? QString("0 dB") : QString("-%1 dB").arg(att,2,16)),att);
|
||||
}
|
||||
} else {
|
||||
ui->attSelCombo->setDisabled(true);
|
||||
|
@ -5066,10 +5064,9 @@ void wfmain::receiveRigID(rigCapabilities rigCaps)
|
|||
if(rigCaps.commands.contains(funcPreamp))
|
||||
{
|
||||
ui->preampSelCombo->setDisabled(false);
|
||||
for(unsigned int i=0; i < rigCaps.preamps.size(); i++)
|
||||
foreach (auto pre, rigCaps.preamps)
|
||||
{
|
||||
inName = (i==0)?QString("Disabled"):QString("Pre #%1").arg(rigCaps.preamps.at(i), 0, 16);
|
||||
ui->preampSelCombo->addItem(inName, rigCaps.preamps.at(i));
|
||||
ui->preampSelCombo->addItem(pre.name, pre.num);
|
||||
}
|
||||
} else {
|
||||
ui->preampSelCombo->setDisabled(true);
|
||||
|
@ -5079,10 +5076,9 @@ void wfmain::receiveRigID(rigCapabilities rigCaps)
|
|||
if(rigCaps.commands.contains(funcAntenna))
|
||||
{
|
||||
ui->antennaSelCombo->setDisabled(false);
|
||||
for(unsigned int i=0; i < rigCaps.antennas.size(); i++)
|
||||
foreach (auto ant, rigCaps.antennas)
|
||||
{
|
||||
inName = QString("%1").arg(rigCaps.antennas.at(i)+1, 0, 16); // adding 1 to have the combobox start with ant 1 instead of 0
|
||||
ui->antennaSelCombo->addItem(inName, rigCaps.antennas.at(i));
|
||||
ui->antennaSelCombo->addItem(ant.name,ant.num);
|
||||
}
|
||||
} else {
|
||||
ui->antennaSelCombo->setDisabled(true);
|
||||
|
@ -7485,17 +7481,12 @@ void wfmain::receiveTPBFOuter(unsigned char level) {
|
|||
|
||||
void wfmain::receiveTuningStep(unsigned char step)
|
||||
{
|
||||
qInfo() << "Received tuning step" << step;
|
||||
if (step > 0)
|
||||
{
|
||||
foreach (auto s, rigCaps.steps)
|
||||
{
|
||||
if (step == s.num) {
|
||||
int find = ui->tuningStepCombo->findData(s.hz);
|
||||
if (find != -1)
|
||||
{
|
||||
ui->tuningStepCombo->setCurrentIndex(find);
|
||||
}
|
||||
ui->tuningStepCombo->setCurrentIndex(ui->tuningStepCombo->findData(s.hz));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -9799,7 +9790,10 @@ void wfmain::on_memoriesBtn_clicked()
|
|||
this->memWindow->connect(this->memWindow, &memories::setMemory, rig,
|
||||
[=](const memoryType &mem) {
|
||||
issueCmd(cmdSetMemory, mem);
|
||||
issueCmd(cmdGetMemory, quint32((mem.group << 16) | (mem.channel & 0xffff)));
|
||||
if (mem.sat)
|
||||
issueCmd(cmdGetSatMemory, quint32(mem.channel & 0xffff));
|
||||
else
|
||||
issueCmd(cmdGetMemory, quint32((mem.group << 16) | (mem.channel & 0xffff)));
|
||||
});
|
||||
|
||||
this->memWindow->connect(this->memWindow, &memories::clearMemory, rig,
|
||||
|
@ -9816,20 +9810,20 @@ void wfmain::on_memoriesBtn_clicked()
|
|||
removeSlowPeriodicCommand(cmdGetFreqB);});
|
||||
|
||||
this->memWindow->connect(this->memWindow, &memories::vfoMode, rig,
|
||||
[=]() { issueCmd(cmdSelVFO, vfo_t::vfoA);
|
||||
insertSlowPeriodicCommand(cmdGetFreqB, 128);});
|
||||
[this]() { issueCmd(cmdSelVFO, vfo_t::vfoA);
|
||||
if (rigCaps.commands.contains(funcVFOBSelect)) insertSlowPeriodicCommand(cmdGetFreqB, 128);});
|
||||
|
||||
this->memWindow->connect(this->memWindow, &memories::setSatelliteMode, rig,
|
||||
[=](const bool &en) {
|
||||
[this](const bool &en) {
|
||||
issueCmd(cmdSetSatelliteMode, en);
|
||||
if (en) {
|
||||
removeSlowPeriodicCommand(cmdGetMode);
|
||||
removeSlowPeriodicCommand(cmdGetFreq);
|
||||
removeSlowPeriodicCommand(cmdGetFreqB);
|
||||
removeSlowPeriodicCommand(cmdGetFreqB);
|
||||
} else {
|
||||
insertSlowPeriodicCommand(cmdGetMode,128);
|
||||
insertSlowPeriodicCommand(cmdGetFreq,128);
|
||||
insertSlowPeriodicCommand(cmdGetFreqB,128);
|
||||
if (rigCaps.commands.contains(funcVFOBSelect)) insertSlowPeriodicCommand(cmdGetFreqB,128);
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -330,8 +330,8 @@ struct memoryType{
|
|||
quint16 tsqlB=670;
|
||||
quint8 dsql=0;
|
||||
quint8 dsqlB=0;
|
||||
int dtcs=0;
|
||||
int dtcsB=0;
|
||||
quint16 dtcs=0;
|
||||
quint16 dtcsB=0;
|
||||
quint8 dtcsp=0;
|
||||
quint8 dtcspB=0;
|
||||
quint8 dvsql=0;
|
||||
|
|
Ładowanie…
Reference in New Issue