Initial work on 8600 memories

translations
Phil Taylor 2024-11-01 11:33:55 +00:00
rodzic 87bb43c726
commit 3dc4fe53a1
5 zmienionych plików z 356 dodań i 88 usunięć

Wyświetl plik

@ -92,8 +92,8 @@ void cachingQueue::run()
it--; it--;
auto item = it.value(); auto item = it.value();
emit haveCommand(item.command,item.param,item.receiver); emit haveCommand(item.command,item.param,item.receiver);
//it=queue.erase(it); it=queue.erase(it);
queue.remove(prio,it.value()); //queue.remove(prio,it.value()); // Will remove ALL matching commands which breaks some things (memory bulk write)
if (item.recurring && prio != priorityImmediate) { if (item.recurring && prio != priorityImmediate) {
queue.insert(prio,item); queue.insert(prio,item);
} }

Wyświetl plik

@ -1510,7 +1510,7 @@ void icomCommander::determineRigCaps()
// Setup memory formats. // Setup memory formats.
static QRegularExpression memFmtEx("%(?<flags>[-+#0])?(?<pos>\\d+|\\*)?(?:\\.(?<width>\\d+|\\*))?(?<spec>[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ])"); static QRegularExpression memFmtEx("%(?<flags>[-+#0])?(?<pos>\\d+|\\*)?(?:\\.(?<width>\\d+|\\*))?(?<spec>[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ+])");
QRegularExpressionMatchIterator i = memFmtEx.globalMatch(rigCaps.memFormat); QRegularExpressionMatchIterator i = memFmtEx.globalMatch(rigCaps.memFormat);
while (i.hasNext()) { while (i.hasNext()) {
QRegularExpressionMatch qmatch = i.next(); QRegularExpressionMatch qmatch = i.next();
@ -2129,7 +2129,7 @@ bool icomCommander::parseMemory(QVector<memParserFormat>* memParser, memoryType*
payloadIn.insert(0,"**"); payloadIn.insert(0,"**");
for (auto &parse: *memParser) { for (auto &parse: *memParser) {
// non-existant memory is short so send what we have so far. // non-existant memory is short so send what we have so far.
if (payloadIn.size() < (parse.pos+1+parse.len)) { if (payloadIn.size() < (parse.pos+1+parse.len) && parse.spec != 'Z') {
return true; return true;
} }
QByteArray data = payloadIn.mid(parse.pos+1,parse.len); QByteArray data = payloadIn.mid(parse.pos+1,parse.len);
@ -2151,10 +2151,17 @@ bool icomCommander::parseMemory(QVector<memParserFormat>* memParser, memoryType*
case 'c': case 'c':
mem->scan = data[0]; mem->scan = data[0];
break; break;
case 'C':
mem->skip = data[0] >> 4 & 0xf;
mem->scan = data[0] & 0xf;
break;
case 'd': // combined split and scan case 'd': // combined split and scan
mem->split = quint8(data[0] >> 4 & 0x0f); mem->split = quint8(data[0] >> 4 & 0x0f);
mem->scan = quint8(data[0] & 0x0f); mem->scan = quint8(data[0] & 0x0f);
break; break;
case 'D': // duplex only (used for IC-R8600)
mem->duplex = quint8(data[0] & 0x0f);
break;
case 'e': case 'e':
mem->vfo=data[0]; mem->vfo=data[0];
break; break;
@ -2267,11 +2274,29 @@ bool icomCommander::parseMemory(QVector<memParserFormat>* memParser, memoryType*
case 'V': case 'V':
memcpy(mem->R2B,data.data(),qMin(int(sizeof mem->R2B),data.size())); memcpy(mem->R2B,data.data(),qMin(int(sizeof mem->R2B),data.size()));
break; break;
case 'w': // Tuning step
if (bool(data[0])) { // Only set if enabled.
mem->tuningStep = quint8(data[1]);
mem->progTs = bcdHexToUInt(data[2],data[3]);
}
break;
case 'x': // Attenuator & Preamp
mem->atten = bcdHexToUChar(data[0]);
mem->preamp = bcdHexToUChar(data[1]);
break;
case 'y': // Antenna
mem->antenna = bcdHexToUChar(data[0]);
break;
case '+': // IP Plus
mem->ipplus=bool(data[0] & 0x0f);
break;
case 'z': case 'z':
if (mem->scan == 0xfe) if (mem->scan == 0xfe)
mem->scan = 0; mem->scan = 0;
memcpy(mem->name,data.data(),qMin(int(sizeof mem->name),data.size())); memcpy(mem->name,data.data(),qMin(int(sizeof mem->name),data.size()));
break; break;
case 'Z': // Special mode dependant features (I have no idea how to make these work!)
break;
default: default:
qInfo() << "Parser didn't match!" << "spec:" << parse.spec << "pos:" << parse.pos << "len" << parse.len; qInfo() << "Parser didn't match!" << "spec:" << parse.spec << "pos:" << parse.pos << "len" << parse.len;
break; break;
@ -2391,7 +2416,7 @@ void icomCommander::receiveCommand(funcs func, QVariant value, uchar receiver)
if (func == funcMemoryContents || func == funcMemoryClear || func == funcMemoryWrite || func == funcMemoryMode) if (func == funcMemoryContents || func == funcMemoryClear || func == funcMemoryWrite || func == funcMemoryMode)
{ {
// Strip out group number from memory for validation purposes. // Strip out group number from memory for validation purposes.
qInfo(logRig()) << "Memory Command" << funcString[func] << "with valuetype " << QString(value.typeName()); qDebug(logRig()) << "Memory Command" << funcString[func] << "with valuetype " << QString(value.typeName());
val = val & 0xffff; val = val & 0xffff;
} }
} }
@ -2541,8 +2566,8 @@ void icomCommander::receiveCommand(funcs func, QVariant value, uchar receiver)
} }
else if (!strcmp(value.typeName(),"uint") && (func == funcMemoryContents || func == funcMemoryMode)) else if (!strcmp(value.typeName(),"uint") && (func == funcMemoryContents || func == funcMemoryMode))
{ {
qInfo(logRig()) << "Get Memory Contents" << (value.value<uint>() & 0xffff); qDebug(logRig()) << "Get Memory Contents" << (value.value<uint>() & 0xffff);
qInfo(logRig()) << "Get Memory Group (if exists)" << (value.value<uint>() >> 16 & 0xffff); qDebug(logRig()) << "Get Memory Group (if exists)" << (value.value<uint>() >> 16 & 0xffff);
// Format is different for all radios! // Format is different for all radios!
if (func == funcMemoryContents) { if (func == funcMemoryContents) {
for (auto &parse: rigCaps.memParser) { for (auto &parse: rigCaps.memParser) {
@ -2604,9 +2629,22 @@ void icomCommander::receiveCommand(funcs func, QVariant value, uchar receiver)
payload.append(mem.scan); payload.append(mem.scan);
} }
break; break;
case 'C':
// Are we deleting the memory?
if (mem.del) {
payload.append(ffchar);
finished=true;
break;
} else {
payload.append(mem.scan);
}
break;
case 'd': // combined split and scan case 'd': // combined split and scan
payload.append(quint8((mem.split << 4 & 0xf0) | (mem.scan & 0x0f))); payload.append(quint8((mem.split << 4 & 0xf0) | (mem.scan & 0x0f)));
break; break;
case 'D': // Duplex only
payload.append(mem.duplex);
break;
case 'e': case 'e':
payload.append(mem.vfo); payload.append(mem.vfo);
break; break;
@ -2725,9 +2763,26 @@ void icomCommander::receiveCommand(funcs func, QVariant value, uchar receiver)
case 'V': case 'V':
payload.append(QByteArray(mem.R2B).leftJustified(parse.len,' ',true)); payload.append(QByteArray(mem.R2B).leftJustified(parse.len,' ',true));
break; break;
case 'w': // Tuning step
payload.append(quint8(mem.tuningStep!=0?true:false));
payload.append(quint8(mem.tuningStep));
payload.append(bcdEncodeInt(mem.progTs));
break;
case 'x': // Attenuator & Preamp
payload.append(bcdEncodeChar(mem.atten));
payload.append(bcdEncodeChar(mem.preamp));
break;
case 'y': // Antenna
payload.append(bcdEncodeChar(mem.antenna));
break;
case '+': // IP Plus
payload.append(bcdEncodeChar(mem.ipplus));
break;
case 'z': case 'z':
payload.append(QByteArray(mem.name).leftJustified(parse.len,' ',true)); payload.append(QByteArray(mem.name).leftJustified(parse.len,' ',true));
break; break;
case 'Z': // Special mode dependant features (I have no idea how to make these work!)
break;
default: default:
break; break;
} }

Wyświetl plik

@ -33,19 +33,30 @@ memories::memories(bool isAdmin, bool slowLoad, QWidget *parent) :
progress->setRange(rigCaps->memStart,rigCaps->memories); progress->setRange(rigCaps->memStart,rigCaps->memories);
if (!rigCaps->commands.contains(funcScanning))
{
ui->scanButton->setVisible(false);
} else {
ui->scanButton->setCheckable(true);
}
QStringList headers; QStringList headers;
/* /*
columnRecall=0, columnNum,columnSplit,columnScan,columnFrequency,columnMode,columnFilter,columnData,columnDuplex,columnToneMode,columnDSQL,columnTone,columnTSQL,columnDTCS, columnRecall=0, columnNum,columnSplit,columnSkip,columnScan,columnFrequency,columnMode,columnFilter,columnData,columnDuplex,columnToneMode,
columnDTCSPolarity,columnDVSquelch,columnOffset,columnUR,columnR1,columnR2,columnFrequencyB,columnModeB,columnFilterB,columnDataB,columnDuplexB,columnToneModeB, columnDSQLB columnTuningStep, columnCustomTuningStep, columnAttenuator, columnPreamplifier, columnAntenna, columnIPPlus,columnDSQL,columnTone,columnTSQL,columnDTCS,
columnToneB,columnTSQLB,columnDTCSB,columnDTCSPolarityB,columnDVSquelchB,columnOffsetB,columnURB,columnR1B,columnR2B,columnName, columnDTCSPolarity,columnDVSquelch,columnOffset,columnUR,columnR1,columnR2,columnFrequencyB,columnModeB,columnFilterB,columnDataB,columnDuplexB,columnToneModeB,
columnTuningStepB, columnCustomTuningStepB, columnAttenuatorB, columnPreamplifierB, columnAntennaB, columnIPPlusB, columnDSQLB
columnToneB,columnTSQLB,columnDTCSB,columnDTCSPolarityB,columnDVSquelchB,columnOffsetB,columnURB,columnR1B,columnR2B,columnName,
*/ */
headers << "" << "Num" << "Name" << "Split" << "Scan" << "VFO" << "Freq" << "Mode" << "Filter" << "Data" <<"Duplex" << "Tn Mode" << "DSQL" << "Tone" << "TSQL" << headers << "" << "Num" << "Name" << "Split" << "Skip" << "Scan" << "VFO" << "Freq" << "Mode" << "Filter" << "Data" <<"Duplex" << "Tn Mode" <<
"DTCS" << "DTCS Pol" << "DV Sql" << "Offset" << "UR" << "R1" << "R2" << "VFO B" << "Freq B" << "Mode B" << "Filter B" << "Data B" << "Duplex B" << "Step" << "Prog Step" << "Atten" << "Preamp" << "Ant" << "IP Plus" << "DSQL" << "Tone" << "TSQL" << "DTCS" << "DTCS Pol" << "DV Sql" <<
"Tn Mode B" << "DSQL B" << "Tone B" << "TSQL B" << "DTCS B" << "DTCSP B" << "DV Sql B" << "Offset B" << "UR B" << "R1 B" << "R2 B"; "Offset" << "UR" << "R1" << "R2" << "VFO B" << "Freq B" << "Mode B" << "Filter B" << "Data B" << "Duplex B" << "Tn Mode B" << "Step B" <<
"Prog Step B" << "Atten B" << "Preamp B" << "Ant B" << "IP Plus B" << "DSQL B" << "Tone B" << "TSQL B" << "DTCS B" << "DTCSP B" <<
"DV Sql B" << "Offset B" << "UR B" << "R1 B" << "R2 B";
skip << "OFF" << "SKIP" << "PSKIP";
scan << "OFF" << "*1" << "*2" << "*3"; scan << "OFF" << "*1" << "*2" << "*3";
split << "OFF" << "ON"; split << "OFF" << "ON";
@ -80,14 +91,37 @@ memories::memories(bool isAdmin, bool slowLoad, QWidget *parent) :
dtcsp << "BOTH N" << "N/R" << "R/N" << "BOTH R"; dtcsp << "BOTH N" << "N/R" << "R/N" << "BOTH R";
ipplus << "OFF" << "ON";
// We can populate the other comboboxes from RigCaps (ensuring they are valid)
tuningSteps << "None";
for (const auto &step: rigCaps->steps)
{
if (step.num)
{
tuningSteps.append(step.name);
}
}
for (const auto &atten: rigCaps->attenuators) {
attenuators.append(QString("%0").arg(atten));
}
for (const auto &preamp: rigCaps->preamps) {
preamps.append(preamp.name);
}
for (const auto &ant: rigCaps->antennas) {
antennas.append(ant.name);
}
ui->table->setHorizontalHeaderLabels(headers); ui->table->setHorizontalHeaderLabels(headers);
ui->group->hide(); ui->group->hide();
ui->vfoMode->hide(); ui->vfoMode->hide();
ui->memoryMode->hide(); ui->memoryMode->hide();
ui->loadingMemories->setVisible(false); //ui->loadingMemories->setVisible(false);
ui->loadingMemories->setStyleSheet("QLabel {color: #ff0000}"); //ui->loadingMemories->setStyleSheet("QLabel {color: #ff0000}");
ui->group->blockSignals(true); ui->group->blockSignals(true);
ui->group->addItem("Memory Group",-1); ui->group->addItem("Memory Group",-1);
@ -208,11 +242,26 @@ void memories::rowAdded(int row)
ui->table->model()->setData(ui->table->model()->index(row,columnNum),QString::number(num).rightJustified(3,'0')); ui->table->model()->setData(ui->table->model()->index(row,columnNum),QString::number(num).rightJustified(3,'0'));
// Set default values (where possible) for all other values: // Set default values (where possible) for all other values:
if (ui->table->item(row,columnSplit) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnSplit),split[0]); if (ui->table->item(row,columnSplit) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnSplit),split[0]);
if (ui->table->item(row,columnSkip) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnSkip),skip[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,columnScan) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnScan),scan[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,columnData) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnData),dataModes[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,columnFilter) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnFilter),filters[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,columnDuplex) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDuplex),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,columnToneMode) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnToneMode),toneModes[0]);
if (ui->table->item(row,columnTuningStep) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnTuningStep),tuningSteps[0]);
if (ui->table->item(row,columnCustomTuningStep) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnCustomTuningStep),"0.000");
if (ui->table->item(row,columnAttenuator) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnAttenuator),attenuators[0]);
if (ui->table->item(row,columnPreamplifier) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnPreamplifier),preamps[0]);
if (ui->table->item(row,columnAntenna) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnAntenna),antennas[0]);
if (ui->table->item(row,columnIPPlus) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnIPPlus),ipplus[0]);
/* columnTuningStep,
columnCustomTuningStep,
columnAttenuator,
columnPreamplifier,
columnAntenna,
columnIPPlus,
*/
if (ui->table->item(row,columnDSQL) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDSQL),dsql[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,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,columnTSQL) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnTSQL),tones[0]);
@ -226,6 +275,12 @@ void memories::rowAdded(int row)
if (ui->table->item(row,columnDataB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDataB),dataModes[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,columnFilterB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnFilterB),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,columnToneModeB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnToneModeB),toneModes[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,columnTuningStepB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnTuningStepB),tuningSteps[0]);
if (ui->table->item(row,columnCustomTuningStepB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnCustomTuningStepB),"0.000");
if (ui->table->item(row,columnAttenuatorB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnAttenuatorB),attenuators[0]);
if (ui->table->item(row,columnPreamplifierB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnPreamplifierB),preamps[0]);
if (ui->table->item(row,columnAntennaB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnAntennaB),antennas[0]);
if (ui->table->item(row,columnIPPlusB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnIPPlusB),ipplus[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,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,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,columnTSQLB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnTSQLB),tones[0]);
@ -327,6 +382,10 @@ void memories::on_table_cellChanged(int row, int col)
currentMemory.split = split.indexOf(ui->table->item(row,columnSplit)->text().toUpper()); currentMemory.split = split.indexOf(ui->table->item(row,columnSplit)->text().toUpper());
} }
if (!ui->table->isColumnHidden(columnSkip) && ui->table->item(row,columnSkip) != NULL) {
currentMemory.skip = skip.indexOf(ui->table->item(row,columnSkip)->text().toUpper());
}
if (!ui->table->isColumnHidden(columnScan) && ui->table->item(row,columnScan) != NULL) { if (!ui->table->isColumnHidden(columnScan) && ui->table->item(row,columnScan) != NULL) {
currentMemory.scan = scan.indexOf(ui->table->item(row,columnScan)->text().toUpper()); currentMemory.scan = scan.indexOf(ui->table->item(row,columnScan)->text().toUpper());
} }
@ -383,6 +442,54 @@ void memories::on_table_cellChanged(int row, int col)
currentMemory.tonemodeB = toneModes.indexOf(ui->table->item(row,columnToneModeB)->text().toUpper()); currentMemory.tonemodeB = toneModes.indexOf(ui->table->item(row,columnToneModeB)->text().toUpper());
} }
if (!ui->table->isColumnHidden(columnTuningStep) && ui->table->item(row,columnTuningStep) != NULL) {
currentMemory.tuningStep = tuningSteps.indexOf(ui->table->item(row,columnTuningStep)->text().toUpper());
}
if (!ui->table->isColumnHidden(columnTuningStepB) && ui->table->item(row,columnTuningStepB) != NULL) {
currentMemory.tuningStepB = tuningSteps.indexOf(ui->table->item(row,columnTuningStepB)->text().toUpper());
}
if (!ui->table->isColumnHidden(columnCustomTuningStep) && ui->table->item(row,columnCustomTuningStep) != NULL) {
currentMemory.progTs =(ui->table->item(row,columnCustomTuningStep) == NULL) ? 0 : int(ui->table->item(row,columnCustomTuningStep)->text().toUInt());
}
if (!ui->table->isColumnHidden(columnCustomTuningStepB) && ui->table->item(row,columnCustomTuningStepB) != NULL) {
currentMemory.progTsB =(ui->table->item(row,columnCustomTuningStepB) == NULL) ? 0 : int(ui->table->item(row,columnCustomTuningStepB)->text().toUInt());
}
if (!ui->table->isColumnHidden(columnAttenuator) && ui->table->item(row,columnAttenuator) != NULL) {
currentMemory.atten = (ui->table->item(row,columnAttenuator) == NULL) ? 0 : int(ui->table->item(row,columnAttenuator)->text().toUInt());
}
if (!ui->table->isColumnHidden(columnAttenuatorB) && ui->table->item(row,columnAttenuatorB) != NULL) {
currentMemory.attenB = (ui->table->item(row,columnAttenuatorB) == NULL) ? 0 : int(ui->table->item(row,columnAttenuatorB)->text().toUInt());
}
if (!ui->table->isColumnHidden(columnPreamplifier) && ui->table->item(row,columnPreamplifier) != NULL) {
currentMemory.preamp = preamps.indexOf(ui->table->item(row,columnPreamplifier)->text().toUpper());
}
if (!ui->table->isColumnHidden(columnPreamplifierB) && ui->table->item(row,columnPreamplifierB) != NULL) {
currentMemory.preampB = preamps.indexOf(ui->table->item(row,columnPreamplifierB)->text().toUpper());
}
if (!ui->table->isColumnHidden(columnAntenna) && ui->table->item(row,columnAntenna) != NULL) {
currentMemory.antenna = antennas.indexOf(ui->table->item(row,columnAntenna)->text().toUpper());
}
if (!ui->table->isColumnHidden(columnAntennaB) && ui->table->item(row,columnAntennaB) != NULL) {
currentMemory.antennaB = antennas.indexOf(ui->table->item(row,columnAntennaB)->text().toUpper());
}
if (!ui->table->isColumnHidden(columnIPPlus) && ui->table->item(row,columnIPPlus) != NULL) {
currentMemory.ipplus = ipplus.indexOf(ui->table->item(row,columnIPPlus)->text().toUpper());
}
if (!ui->table->isColumnHidden(columnIPPlusB) && ui->table->item(row,columnIPPlusB) != NULL) {
currentMemory.ipplusB = ipplus.indexOf(ui->table->item(row,columnIPPlusB)->text().toUpper());
}
if (!ui->table->isColumnHidden(columnDSQL) && ui->table->item(row,columnDSQL) != NULL) { if (!ui->table->isColumnHidden(columnDSQL) && ui->table->item(row,columnDSQL) != NULL) {
currentMemory.dsql = dsql.indexOf(ui->table->item(row,columnDSQL)->text().toUpper()); currentMemory.dsql = dsql.indexOf(ui->table->item(row,columnDSQL)->text().toUpper());
} }
@ -439,7 +546,7 @@ void memories::on_table_cellChanged(int row, int col)
write=false; write=false;
} }
if (write) { if (write) {
queue->add(priorityImmediate,queueItem((currentMemory.sat?funcSatelliteMemory:funcMemoryContents),QVariant::fromValue<memoryType>(currentMemory))); queue->add(priorityHighest,queueItem((currentMemory.sat?funcSatelliteMemory:funcMemoryContents),QVariant::fromValue<memoryType>(currentMemory)));
qInfo() << "Sending memory, group:" << currentMemory.group << "channel" << currentMemory.channel; qInfo() << "Sending memory, group:" << currentMemory.group << "channel" << currentMemory.channel;
// Set number to not be editable once written. Not sure why but this crashes? // 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)); //ui->table->item(row,columnNum)->setFlags(ui->table->item(row,columnNum)->flags() & (~Qt::ItemIsEditable));
@ -463,7 +570,7 @@ void memories::on_group_currentIndexChanged(int index)
else else
groupMemories=rigCaps->memories; groupMemories=rigCaps->memories;
ui->loadingMemories->setVisible(true); //ui->loadingMemories->setVisible(true);
ui->table->setEditTriggers(QAbstractItemView::NoEditTriggers); ui->table->setEditTriggers(QAbstractItemView::NoEditTriggers);
ui->group->setEnabled(false); ui->group->setEnabled(false);
@ -512,6 +619,20 @@ void memories::on_group_currentIndexChanged(int index)
ui->table->showColumn(columnNum); ui->table->showColumn(columnNum);
visibleColumns++; visibleColumns++;
break; break;
#if defined __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wimplicit-fallthrough"
#endif
case 'C':
if (skipList != Q_NULLPTR)
delete skipList;
skipList = new tableCombobox(createModel(skipModel, skip),false,ui->table);
ui->table->setItemDelegateForColumn(columnSkip, skipList);
ui->table->showColumn(columnSkip);
visibleColumns++;
// Fallthrough to add Scanlist column as well.
scan.clear();
scan << "OFF" << "*1" << "*2" << "*3" << "*4" << "*5" << "*6" << "*7" << "*8" << "*9";
case 'c': case 'c':
if (scanList != Q_NULLPTR) if (scanList != Q_NULLPTR)
delete scanList; delete scanList;
@ -521,6 +642,9 @@ void memories::on_group_currentIndexChanged(int index)
ui->table->showColumn(columnScan); ui->table->showColumn(columnScan);
visibleColumns++; visibleColumns++;
break; break;
#if defined __GNUC__
#pragma GCC diagnostic pop
#endif
case 'd': case 'd':
if (splitList != Q_NULLPTR) if (splitList != Q_NULLPTR)
delete splitList; delete splitList;
@ -538,7 +662,14 @@ void memories::on_group_currentIndexChanged(int index)
visibleColumns++; visibleColumns++;
visibleColumns++; visibleColumns++;
break; break;
case 'D': // Duplex only added for IC-R8600 (most rigs use j for duplex+tone)
if (duplexList != Q_NULLPTR)
delete duplexList;
duplexList = new tableCombobox(createModel(duplexModel, duplexModes),false,ui->table);
ui->table->setItemDelegateForColumn(columnDuplex, duplexList);
ui->table->showColumn(columnDuplex);
visibleColumns++;
break;
case 'e': case 'e':
if (vfoList != Q_NULLPTR) if (vfoList != Q_NULLPTR)
delete vfoList; delete vfoList;
@ -889,6 +1020,53 @@ void memories::on_group_currentIndexChanged(int index)
ui->table->showColumn(columnR2B); ui->table->showColumn(columnR2B);
visibleColumns++; visibleColumns++;
break; break;
case 'w':
if (tuningStepsList != Q_NULLPTR)
delete tuningStepsList;
tuningStepsList = new tableCombobox(createModel(tuningStepsModel, tuningSteps),false,ui->table);
ui->table->setItemDelegateForColumn(columnTuningStep, tuningStepsList);
ui->table->showColumn(columnTuningStep);
visibleColumns++;
if (tuningStepEditor != Q_NULLPTR)
delete tuningStepEditor;
tuningStepEditor = new tableEditor("0000",ui->table);
ui->table->setItemDelegateForColumn(columnCustomTuningStep, tuningStepEditor);
ui->table->showColumn(columnCustomTuningStep);
visibleColumns++;
break;
case 'x':
if (attenuatorsList != Q_NULLPTR)
delete attenuatorsList;
attenuatorsList = new tableCombobox(createModel(attenuatorsModel, attenuators),false,ui->table);
ui->table->setItemDelegateForColumn(columnAttenuator, attenuatorsList);
ui->table->showColumn(columnAttenuator);
visibleColumns++;
if (preampsList != Q_NULLPTR)
delete preampsList;
preampsList = new tableCombobox(createModel(preampsModel, preamps),false,ui->table);
ui->table->setItemDelegateForColumn(columnPreamplifier, preampsList);
ui->table->showColumn(columnPreamplifier);
visibleColumns++;
break;
case 'y':
if (antennasList != Q_NULLPTR)
delete antennasList;
antennasList = new tableCombobox(createModel(antennasModel, antennas),false,ui->table);
ui->table->setItemDelegateForColumn(columnAntenna, antennasList);
ui->table->showColumn(columnAntenna);
visibleColumns++;
break;
case '+':
if (ipplusList != Q_NULLPTR)
delete ipplusList;
ipplusList = new tableCombobox(createModel(ipplusModel, ipplus),false,ui->table);
ui->table->setItemDelegateForColumn(columnIPPlus, ipplusList);
ui->table->showColumn(columnIPPlus);
visibleColumns++;
break;
case 'z': case 'z':
if (nameEditor != Q_NULLPTR) if (nameEditor != Q_NULLPTR)
delete nameEditor; delete nameEditor;
@ -898,6 +1076,8 @@ void memories::on_group_currentIndexChanged(int index)
ui->table->showColumn(columnName); ui->table->showColumn(columnName);
visibleColumns++; visibleColumns++;
break; break;
case 'Z':
break;
default: default:
break; break;
} }
@ -939,7 +1119,7 @@ void memories::on_group_currentIndexChanged(int index)
queue->add(priorityImmediate,queueItem(funcMemoryContents,QVariant::fromValue<uint>(lastMemoryRequested))); queue->add(priorityImmediate,queueItem(funcMemoryContents,QVariant::fromValue<uint>(lastMemoryRequested)));
} }
} }
ui->loadingMemories->setText(QString("Loading Memory %0/%1 (this may take a while!)").arg(lastMemoryRequested&0xffff,3,10,QLatin1Char('0')).arg(rigCaps->memories,3,10,QLatin1Char('0'))); //ui->loadingMemories->setText(QString("Loading Memory %0/%1 (this may take a while!)").arg(lastMemoryRequested&0xffff,3,10,QLatin1Char('0')).arg(rigCaps->memories,3,10,QLatin1Char('0')));
} }
void memories::on_vfoMode_clicked() void memories::on_vfoMode_clicked()
@ -962,7 +1142,7 @@ void memories::on_memoryMode_clicked()
void memories::receiveMemory(memoryType mem) void memories::receiveMemory(memoryType mem)
{ {
ui->loadingMemories->setText(QString("Loading Memory %0/%1 (this may take a while!)").arg(lastMemoryRequested&0xffff,3,10,QLatin1Char('0')).arg(rigCaps->memories,3,10,QLatin1Char('0'))); //ui->loadingMemories->setText(QString("Loading Memory %0/%1 (this may take a while!)").arg(lastMemoryRequested&0xffff,3,10,QLatin1Char('0')).arg(rigCaps->memories,3,10,QLatin1Char('0')));
progress->setValue(lastMemoryRequested & 0xffff); progress->setValue(lastMemoryRequested & 0xffff);
// First, do we need to request the next memory? // First, do we need to request the next memory?
if ((lastMemoryRequested & 0xffff) < groupMemories) if ((lastMemoryRequested & 0xffff) < groupMemories)
@ -978,7 +1158,7 @@ void memories::receiveMemory(memoryType mem)
{ {
timeoutTimer.stop(); timeoutTimer.stop();
ui->group->setEnabled(true); ui->group->setEnabled(true);
ui->loadingMemories->setVisible(false); //ui->loadingMemories->setVisible(false);
if (!ui->disableEditing->isChecked()) if (!ui->disableEditing->isChecked())
{ {
ui->table->setEditTriggers(QAbstractItemView::DoubleClicked); ui->table->setEditTriggers(QAbstractItemView::DoubleClicked);
@ -1026,6 +1206,8 @@ void memories::receiveMemory(memoryType mem)
validData += updateCombo(split,row,columnSplit,mem.split); validData += updateCombo(split,row,columnSplit,mem.split);
validData += updateCombo(skip,row,columnSkip,mem.skip);
validData += updateCombo(scan,row,columnScan,mem.scan); validData += updateCombo(scan,row,columnScan,mem.scan);
@ -1045,43 +1227,54 @@ void memories::receiveMemory(memoryType mem)
} }
validData += updateCombo(dataModes,row,columnData,mem.datamode); validData += updateCombo(dataModes,row,columnData,mem.datamode);
validData += updateCombo(dataModes,row,columnDataB,mem.datamodeB); validData += updateCombo(dataModes,row,columnDataB,mem.datamodeB);
validData += updateCombo(toneModes,row,columnToneMode,mem.tonemode); validData += updateCombo(toneModes,row,columnToneMode,mem.tonemode);
validData += updateCombo(toneModes,row,columnToneModeB,mem.tonemodeB); validData += updateCombo(toneModes,row,columnToneModeB,mem.tonemodeB);
validData += updateCombo(filters,row,columnFilter,mem.filter-1); validData += updateCombo(filters,row,columnFilter,mem.filter-1);
validData += updateCombo(filters,row,columnFilterB,mem.filterB-1); validData += updateCombo(filters,row,columnFilterB,mem.filterB-1);
validData += updateCombo(duplexModes,row,columnDuplex,mem.duplex); validData += updateCombo(duplexModes,row,columnDuplex,mem.duplex);
validData += updateCombo(duplexModes,row,columnDuplexB,mem.duplexB); validData += updateCombo(duplexModes,row,columnDuplexB,mem.duplexB);
validData += updateCombo(dsql,row,columnDSQL,mem.dsql); validData += updateCombo(dsql,row,columnDSQL,mem.dsql);
validData += updateCombo(dsql,row,columnDSQLB,mem.dsqlB); validData += updateCombo(dsql,row,columnDSQLB,mem.dsqlB);
validData += updateCombo(tones,row,columnTone,QString::number((float)mem.tone/10,'f',1)); validData += updateCombo(tones,row,columnTone,QString::number((float)mem.tone/10,'f',1));
validData += updateCombo(tones,row,columnToneB,QString::number((float)mem.toneB/10,'f',1)); 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(tuningSteps,row,columnTuningStep,mem.tuningStep);
validData += updateCombo(tuningSteps,row,columnTuningStepB,mem.tuningStepB);
ui->table->model()->setData(ui->table->model()->index(row,columnCustomTuningStep),QString::number(mem.progTs));
validData++;
ui->table->model()->setData(ui->table->model()->index(row,columnCustomTuningStepB),QString::number(mem.progTsB));
validData++;
validData += updateCombo(attenuators,row,columnAttenuator,mem.atten);
validData += updateCombo(attenuators,row,columnAttenuatorB,mem.attenB);
validData += updateCombo(attenuators,row,columnPreamplifier,mem.preamp);
validData += updateCombo(attenuators,row,columnPreamplifierB,mem.preampB);
validData += updateCombo(antennas,row,columnAntenna,mem.antenna);
validData += updateCombo(antennas,row,columnAntennaB,mem.antennaB);
validData += updateCombo(ipplus,row,columnIPPlus,mem.ipplus);
validData += updateCombo(ipplus,row,columnIPPlusB,mem.ipplusB);
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(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,columnDVSquelch,QString::number(mem.dvsql).rightJustified(2,'0'));
validData += updateCombo(dvsql,row,columnDVSquelchB,QString::number(mem.dvsqlB).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,columnDTCSPolarity,mem.dtcsp);
validData += updateCombo(dtcsp,row,columnDTCSPolarityB,mem.dtcspB); validData += updateCombo(dtcsp,row,columnDTCSPolarityB,mem.dtcspB);
validData += updateCombo(dtcs,row,columnDTCS,QString::number(mem.dtcs).rightJustified(3,'0')); validData += updateCombo(dtcs,row,columnDTCS,QString::number(mem.dtcs).rightJustified(3,'0'));
validData += updateCombo(dtcs,row,columnDTCSB,QString::number(mem.dtcsB).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)); ui->table->model()->setData(ui->table->model()->index(row,columnOffset),QString::number(double(mem.duplexOffset.Hz/10000.0),'f',3));
@ -1160,7 +1353,7 @@ void memories::receiveMemory(memoryType mem)
else if (row != -1) else if (row != -1)
{ {
// Check if we already have this memory as it might have failed to write? // Check if we already have this memory as it might have failed to write?
ui->loadingMemories->setStyleSheet("QLabel {color: #ff0000}"); //ui->loadingMemories->setStyleSheet("QLabel {color: #ff0000}");
ui->table->item(row,columnNum)->setBackground(Qt::red); ui->table->item(row,columnNum)->setBackground(Qt::red);
} }
@ -1222,7 +1415,7 @@ void memories::timeout()
timeoutCount++; timeoutCount++;
} else { } else {
timeoutCount=0; timeoutCount=0;
ui->loadingMemories->setVisible(false); //ui->loadingMemories->setVisible(false);
timeoutTimer.stop(); timeoutTimer.stop();
ui->group->setEnabled(true); ui->group->setEnabled(true);
if (!ui->disableEditing->isChecked()) if (!ui->disableEditing->isChecked())
@ -1258,6 +1451,8 @@ void memories::on_csvImport_clicked()
if (!file.isEmpty()) if (!file.isEmpty())
{ {
ui->table->blockSignals(true);
ui->table->sortByColumn(0,Qt::AscendingOrder); // Force natural order ui->table->sortByColumn(0,Qt::AscendingOrder); // Force natural order
QFile data(file); QFile data(file);
@ -1305,7 +1500,6 @@ void memories::on_csvImport_clicked()
int colnum=1; int colnum=1;
ui->table->blockSignals(true);
for (int i=0; i<row.size();i++) for (int i=0; i<row.size();i++)
{ {
while (colnum < ui->table->columnCount() && ui->table->isColumnHidden(colnum)) { while (colnum < ui->table->columnCount() && ui->table->isColumnHidden(colnum)) {
@ -1353,14 +1547,18 @@ void memories::on_csvImport_clicked()
break; break;
} }
if (colnum == lastcol)
ui->table->blockSignals(false);
ui->table->model()->setData(ui->table->model()->index(rownum,colnum),data); ui->table->model()->setData(ui->table->model()->index(rownum,colnum),data);
if (colnum == lastcol) {
on_table_cellChanged(rownum,colnum); // store this row.
}
colnum++; colnum++;
} }
} }
} }
ui->table->blockSignals(false);
} }
} }
@ -1478,3 +1676,14 @@ void memories::on_disableEditing_toggled(bool dis)
ui->table->setEditTriggers(QAbstractItemView::DoubleClicked); ui->table->setEditTriggers(QAbstractItemView::DoubleClicked);
} }
} }
void memories::on_scanButton_toggled(bool scan)
{
if (scan) {
ui->scanButton->setText("Stop Scan");
} else {
ui->scanButton->setText("Start Scan");
}
queue->add(priorityImmediate,queueItem(funcScanning,QVariant::fromValue<uchar>(uchar(scan))));
}

Wyświetl plik

@ -43,6 +43,7 @@ private slots:
void on_memoryMode_clicked(); void on_memoryMode_clicked();
void on_csvImport_clicked(); void on_csvImport_clicked();
void on_csvExport_clicked(); void on_csvExport_clicked();
void on_scanButton_toggled(bool scan);
void on_disableEditing_toggled(bool dis); void on_disableEditing_toggled(bool dis);
bool readCSVRow (QTextStream &in, QStringList *row); bool readCSVRow (QTextStream &in, QStringList *row);
@ -69,6 +70,7 @@ private:
QStringList split; QStringList split;
QStringList scan; QStringList scan;
QStringList skip;
QStringList vfos; QStringList vfos;
QStringList duplexModes; QStringList duplexModes;
QStringList modes; QStringList modes;
@ -80,6 +82,11 @@ private:
QStringList dtcsp; QStringList dtcsp;
QStringList dsql; QStringList dsql;
QStringList dvsql; QStringList dvsql;
QStringList tuningSteps;
QStringList preamps;
QStringList attenuators;
QStringList antennas;
QStringList ipplus;
/* /*
columnFrequencyB, columnFrequencyB,
@ -98,6 +105,7 @@ private:
columnR2B, columnR2B,
*/ */
QStandardItemModel* splitModel = Q_NULLPTR; QStandardItemModel* splitModel = Q_NULLPTR;
QStandardItemModel* skipModel = Q_NULLPTR;
QStandardItemModel* scanModel = Q_NULLPTR; QStandardItemModel* scanModel = Q_NULLPTR;
QStandardItemModel* filterModel = Q_NULLPTR; QStandardItemModel* filterModel = Q_NULLPTR;
QStandardItemModel* vfoModel = Q_NULLPTR; QStandardItemModel* vfoModel = Q_NULLPTR;
@ -111,6 +119,11 @@ private:
QStandardItemModel* dtcspModel = Q_NULLPTR; QStandardItemModel* dtcspModel = Q_NULLPTR;
QStandardItemModel* dtcsModel = Q_NULLPTR; QStandardItemModel* dtcsModel = Q_NULLPTR;
QStandardItemModel* dvsqlModel = Q_NULLPTR; QStandardItemModel* dvsqlModel = Q_NULLPTR;
QStandardItemModel* tuningStepsModel = Q_NULLPTR;
QStandardItemModel* preampsModel = Q_NULLPTR;
QStandardItemModel* attenuatorsModel = Q_NULLPTR;
QStandardItemModel* antennasModel = Q_NULLPTR;
QStandardItemModel* ipplusModel = Q_NULLPTR;
QStandardItemModel* vfoModelB = Q_NULLPTR; QStandardItemModel* vfoModelB = Q_NULLPTR;
QStandardItemModel* modesModelB = Q_NULLPTR; QStandardItemModel* modesModelB = Q_NULLPTR;
@ -124,11 +137,17 @@ private:
QStandardItemModel* duplexModelB = Q_NULLPTR; QStandardItemModel* duplexModelB = Q_NULLPTR;
QStandardItemModel* dtcsModelB = Q_NULLPTR; QStandardItemModel* dtcsModelB = Q_NULLPTR;
QStandardItemModel* dvsqlModelB = Q_NULLPTR; QStandardItemModel* dvsqlModelB = Q_NULLPTR;
// I don't know of any radio that uses these!
QStandardItemModel* tuningStepsModelB = Q_NULLPTR;
QStandardItemModel* preampsModelB = Q_NULLPTR;
QStandardItemModel* attenuatorsModelB = Q_NULLPTR;
QStandardItemModel* antennasModelB = Q_NULLPTR;
QStandardItemModel* ipplusModelB = Q_NULLPTR;
tableEditor* numEditor = Q_NULLPTR; tableEditor* numEditor = Q_NULLPTR;
tableCombobox* splitList = Q_NULLPTR; tableCombobox* splitList = Q_NULLPTR;
tableCombobox* scanList = Q_NULLPTR; tableCombobox* scanList = Q_NULLPTR;
tableCombobox* skipList = Q_NULLPTR;
tableCombobox* vfoList = Q_NULLPTR; tableCombobox* vfoList = Q_NULLPTR;
tableEditor* nameEditor = Q_NULLPTR; tableEditor* nameEditor = Q_NULLPTR;
tableEditor* freqEditor = Q_NULLPTR; tableEditor* freqEditor = Q_NULLPTR;
@ -147,6 +166,12 @@ private:
tableEditor* urEditor = Q_NULLPTR; tableEditor* urEditor = Q_NULLPTR;
tableEditor* r1Editor = Q_NULLPTR; tableEditor* r1Editor = Q_NULLPTR;
tableEditor* r2Editor = Q_NULLPTR; tableEditor* r2Editor = Q_NULLPTR;
tableCombobox* tuningStepsList = Q_NULLPTR;
tableEditor* tuningStepEditor = Q_NULLPTR;
tableCombobox* preampsList = Q_NULLPTR;
tableCombobox* attenuatorsList = Q_NULLPTR;
tableCombobox* antennasList = Q_NULLPTR;
tableCombobox* ipplusList = Q_NULLPTR;
tableCombobox* vfoListB = Q_NULLPTR; tableCombobox* vfoListB = Q_NULLPTR;
tableEditor* freqEditorB = Q_NULLPTR; tableEditor* freqEditorB = Q_NULLPTR;
@ -165,6 +190,12 @@ private:
tableEditor* urEditorB = Q_NULLPTR; tableEditor* urEditorB = Q_NULLPTR;
tableEditor* r1EditorB = Q_NULLPTR; tableEditor* r1EditorB = Q_NULLPTR;
tableEditor* r2EditorB = Q_NULLPTR; tableEditor* r2EditorB = Q_NULLPTR;
tableCombobox* tuningStepsListB = Q_NULLPTR;
tableEditor* tuningStepEditorB = Q_NULLPTR;
tableCombobox* preampsListB = Q_NULLPTR;
tableCombobox* attenuatorsListB = Q_NULLPTR;
tableCombobox* antennasListB = Q_NULLPTR;
tableCombobox* ipplusListBB = Q_NULLPTR;
rigCapabilities* rigCaps = Q_NULLPTR; rigCapabilities* rigCaps = Q_NULLPTR;
@ -179,6 +210,7 @@ private:
columnNum, columnNum,
columnName, columnName,
columnSplit, columnSplit,
columnSkip,
columnScan, columnScan,
columnVFO, columnVFO,
columnFrequency, columnFrequency,
@ -187,6 +219,12 @@ private:
columnData, columnData,
columnDuplex, columnDuplex,
columnToneMode, columnToneMode,
columnTuningStep,
columnCustomTuningStep,
columnAttenuator,
columnPreamplifier,
columnAntenna,
columnIPPlus,
columnDSQL, columnDSQL,
columnTone, columnTone,
columnTSQL, columnTSQL,
@ -204,6 +242,12 @@ private:
columnDataB, columnDataB,
columnDuplexB, columnDuplexB,
columnToneModeB, columnToneModeB,
columnTuningStepB,
columnCustomTuningStepB,
columnAttenuatorB,
columnPreamplifierB,
columnAntennaB,
columnIPPlusB,
columnDSQLB, columnDSQLB,
columnToneB, columnToneB,
columnTSQLB, columnTSQLB,

Wyświetl plik

@ -17,7 +17,7 @@
<item row="0" column="0"> <item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<property name="sizeConstraint"> <property name="sizeConstraint">
<enum>QLayout::SetMaximumSize</enum> <enum>QLayout::SizeConstraint::SetMaximumSize</enum>
</property> </property>
<item> <item>
<layout class="QHBoxLayout" name="horizontalLayout"> <layout class="QHBoxLayout" name="horizontalLayout">
@ -27,7 +27,7 @@
<item> <item>
<spacer name="horizontalSpacer_4"> <spacer name="horizontalSpacer_4">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Orientation::Horizontal</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
@ -50,7 +50,7 @@
<item> <item>
<spacer name="horizontalSpacer_3"> <spacer name="horizontalSpacer_3">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Orientation::Horizontal</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
@ -61,56 +61,16 @@
</spacer> </spacer>
</item> </item>
<item> <item>
<widget class="QLabel" name="loadingMemories"> <widget class="QPushButton" name="scanButton">
<property name="enabled">
<bool>true</bool>
</property>
<property name="palette">
<palette>
<active>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
</active>
<inactive>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>0</red>
<green>0</green>
<blue>0</blue>
</color>
</brush>
</colorrole>
</inactive>
<disabled>
<colorrole role="WindowText">
<brush brushstyle="SolidPattern">
<color alpha="255">
<red>120</red>
<green>120</green>
<blue>120</blue>
</color>
</brush>
</colorrole>
</disabled>
</palette>
</property>
<property name="text"> <property name="text">
<string>Loading Memories (this may take a while!)</string> <string>Start Scan</string>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<spacer name="horizontalSpacer"> <spacer name="horizontalSpacer">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Orientation::Horizontal</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
@ -137,7 +97,7 @@
<item> <item>
<spacer name="horizontalSpacer_2"> <spacer name="horizontalSpacer_2">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Orientation::Horizontal</enum>
</property> </property>
<property name="sizeHint" stdset="0"> <property name="sizeHint" stdset="0">
<size> <size>
@ -169,10 +129,10 @@
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="selectionMode"> <property name="selectionMode">
<enum>QAbstractItemView::SingleSelection</enum> <enum>QAbstractItemView::SelectionMode::SingleSelection</enum>
</property> </property>
<property name="selectionBehavior"> <property name="selectionBehavior">
<enum>QAbstractItemView::SelectItems</enum> <enum>QAbstractItemView::SelectionBehavior::SelectItems</enum>
</property> </property>
<property name="sortingEnabled"> <property name="sortingEnabled">
<bool>true</bool> <bool>true</bool>