rigcreator
Phil Taylor 2023-05-09 12:11:38 +01:00
rodzic 2f3610d8ad
commit a0eabdafe8
10 zmienionych plików z 300 dodań i 385 usunięć

Wyświetl plik

@ -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);
}

Wyświetl plik

@ -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

Wyświetl plik

@ -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();
}

Wyświetl plik

@ -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();

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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;

Wyświetl plik

@ -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 ;

Wyświetl plik

@ -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;
};

Wyświetl plik

@ -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);
}
});

Wyświetl plik

@ -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;