kopia lustrzana https://gitlab.com/eliggett/wfview
Add option to use current freq/mode in memories
rodzic
7e9c96e938
commit
1574457a9e
|
@ -3029,7 +3029,6 @@ void icomCommander::receiveCommand(funcs func, QVariant value, uchar receiver)
|
|||
uchar ffchar = 0xff;
|
||||
QVector<memParserFormat> parser;
|
||||
memoryType mem = value.value<memoryType>();
|
||||
|
||||
if (mem.sat)
|
||||
{
|
||||
parser = rigCaps.satParser;
|
||||
|
@ -3076,7 +3075,13 @@ void icomCommander::receiveCommand(funcs func, QVariant value, uchar receiver)
|
|||
}
|
||||
break;
|
||||
case 'd': // combined split and scan
|
||||
payload.append(quint8((mem.split << 4 & 0xf0) | (mem.scan & 0x0f)));
|
||||
if (mem.del) {
|
||||
payload.append(ffchar);
|
||||
finished=true;
|
||||
break;
|
||||
} else {
|
||||
payload.append(quint8((mem.split << 4 & 0xf0) | (mem.scan & 0x0f)));
|
||||
}
|
||||
break;
|
||||
case 'D': // Duplex only
|
||||
payload.append(mem.duplex);
|
||||
|
@ -3089,7 +3094,9 @@ void icomCommander::receiveCommand(funcs func, QVariant value, uchar receiver)
|
|||
break;
|
||||
case 'f':
|
||||
if (mem.del) {
|
||||
qDebug() << "Pre deleting f" << payload.toHex(' ');
|
||||
payload.append(ffchar);
|
||||
qDebug() << "Deleting f" << payload.toHex(' ');
|
||||
finished=true;
|
||||
break;
|
||||
} else {
|
||||
|
|
495
memories.cpp
495
memories.cpp
|
@ -210,9 +210,56 @@ columnDTCSPolarityB,columnDVSquelchB,columnOffsetB,columnURB,columnR1B,columnR2B
|
|||
|
||||
connect(ui->table,SIGNAL(rowAdded(int)),this,SLOT(rowAdded(int)));
|
||||
connect(ui->table,SIGNAL(rowValDeleted(quint32)),this,SLOT(rowDeleted(quint32)));
|
||||
connect(ui->table,SIGNAL(menuAction(QAction*, quint32)),this,SLOT(menuAction(QAction*, quint32)));
|
||||
connect(&timeoutTimer, SIGNAL(timeout()), this, SLOT(timeout()));
|
||||
|
||||
ui->table->sortByColumn(columnRecall,Qt::AscendingOrder);
|
||||
|
||||
ui->table->addAction(useCurrent);
|
||||
ui->table->addAction(addCurrent);
|
||||
}
|
||||
|
||||
void memories::menuAction(QAction* action, quint32 row)
|
||||
{
|
||||
// First we need to populate a memory struct:
|
||||
|
||||
memoryType mem;
|
||||
vfoCommandType ta = queue->getVfoCommand(vfoA,0,false);
|
||||
vfoCommandType tb;
|
||||
|
||||
if (rigCaps->numReceiver > 1)
|
||||
tb = queue->getVfoCommand(vfoA,1,false);
|
||||
else
|
||||
tb = queue->getVfoCommand(vfoB,0,false);
|
||||
|
||||
mem.split = queue->getCache(funcSplitStatus).value.value<uchar>();
|
||||
|
||||
mem.frequency = queue->getCache(ta.freqFunc,ta.receiver).value.value<freqt>();
|
||||
mem.mode = queue->getCache(ta.modeFunc,ta.receiver).value.value<modeInfo>().reg;
|
||||
mem.filter = queue->getCache(ta.modeFunc,ta.receiver).value.value<modeInfo>().filter;
|
||||
|
||||
mem.frequencyB = queue->getCache(tb.freqFunc,tb.receiver).value.value<freqt>();
|
||||
mem.modeB = queue->getCache(tb.modeFunc,tb.receiver).value.value<modeInfo>().reg;
|
||||
mem.filterB = queue->getCache(tb.modeFunc,tb.receiver).value.value<modeInfo>().filter;
|
||||
|
||||
if (action == useCurrent)
|
||||
{
|
||||
qInfo() << "Use Current" << row;
|
||||
memcpy(mem.name,"<UPDATED>",sizeof mem.name);
|
||||
updateRow(row,mem);
|
||||
}
|
||||
else if (action == addCurrent)
|
||||
{
|
||||
qInfo() << "Add Current" << row;
|
||||
memcpy(mem.name,"<NEW>",sizeof mem.name);
|
||||
row=ui->table->rowCount();
|
||||
ui->table->insertRow(ui->table->rowCount());
|
||||
rowAdded(row,mem);
|
||||
}
|
||||
else
|
||||
{
|
||||
qInfo() << "Unknown action" << row;
|
||||
}
|
||||
}
|
||||
|
||||
void memories::enableCell(int row, int col, bool en) {
|
||||
|
@ -243,7 +290,176 @@ memories::~memories()
|
|||
delete ui;
|
||||
}
|
||||
|
||||
void memories::rowAdded(int row)
|
||||
int memories::updateRow(int row, memoryType mem, bool store)
|
||||
{
|
||||
|
||||
|
||||
ui->table->blockSignals(true);
|
||||
|
||||
int validData=0; // We have 1 more row than will ever be received.
|
||||
|
||||
validData += updateEntry(split,row,columnSplit,mem.split);
|
||||
validData += updateEntry(skip,row,columnSkip,mem.skip);
|
||||
validData += updateEntry(scan,row,columnScan,mem.scan);
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnFrequency),QString::number(double(mem.frequency.Hz/1000000.0),'f',5));
|
||||
validData++;
|
||||
|
||||
if (mem.frequencyB.Hz > 0)
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnFrequencyB),QString::number(double(mem.frequencyB.Hz/1000000.0),'f',5));
|
||||
else
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnFrequencyB),QString::number(double(mem.frequency.Hz/1000000.0),'f',5));
|
||||
|
||||
validData++;
|
||||
|
||||
// Make sure these are populated before mode so they can be enabled/disabled.
|
||||
validData += updateEntry(toneModes,row,columnToneMode,mem.tonemode);
|
||||
validData += updateEntry(toneModes,row,columnToneModeB,mem.tonemodeB);
|
||||
|
||||
validData += updateEntry(dsql,row,columnDSQL,mem.dsql);
|
||||
validData += updateEntry(dsql,row,columnDSQLB,mem.dsqlB);
|
||||
|
||||
validData += updateEntry(tones,row,columnTSQL,mem.tsql);
|
||||
validData += updateEntry(tones,row,columnTSQLB,mem.tsqlB);
|
||||
|
||||
validData += updateEntry(dvsql,row,columnDVSquelch,QString::number(mem.dvsql).rightJustified(2,'0'));
|
||||
validData += updateEntry(dvsql,row,columnDVSquelchB,QString::number(mem.dvsqlB).rightJustified(2,'0'));
|
||||
|
||||
validData += updateEntry(dtcs,row,columnDTCS,QString::number(mem.dtcs).rightJustified(3,'0'));
|
||||
validData += updateEntry(dtcs,row,columnDTCSB,QString::number(mem.dtcsB).rightJustified(3,'0'));
|
||||
|
||||
validData += updateEntry(dtcsp,row,columnDTCSPolarity,mem.dtcsp);
|
||||
validData += updateEntry(dtcsp,row,columnDTCSPolarityB,mem.dtcspB);
|
||||
|
||||
validData += updateEntry(dataModes,row,columnData,mem.datamode);
|
||||
validData += updateEntry(dataModes,row,columnDataB,mem.datamodeB);
|
||||
|
||||
if (rigCaps->manufacturer == manufKenwood) {
|
||||
validData += updateEntry(filters,row,columnFilter,mem.filter);
|
||||
validData += updateEntry(filters,row,columnFilterB,mem.filterB);
|
||||
} else {
|
||||
validData += updateEntry(filters,row,columnFilter,mem.filter-1);
|
||||
validData += updateEntry(filters,row,columnFilterB,mem.filterB-1);
|
||||
}
|
||||
validData += updateEntry(duplexModes,row,columnDuplex,mem.duplex);
|
||||
validData += updateEntry(duplexModes,row,columnDuplexB,mem.duplexB);
|
||||
|
||||
validData += updateEntry(tones,row,columnTone,mem.tone);
|
||||
validData += updateEntry(tones,row,columnToneB,mem.toneB);
|
||||
|
||||
validData += updateEntry(tuningSteps,row,columnTuningStep,mem.tuningStep);
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnCustomTuningStep),QString::number(mem.progTs));
|
||||
validData++;
|
||||
|
||||
if (ui->table->item(row,columnTuningStep) != NULL && ui->table->item(row,columnTuningStep)->text() != "Prog")
|
||||
{
|
||||
ui->table->item(row,columnCustomTuningStep)->setFlags(ui->table->item(row,columnCustomTuningStep)->flags() & ~Qt::ItemIsEnabled);
|
||||
}
|
||||
|
||||
validData += updateEntry(attenuators,row,columnAttenuator,mem.atten);
|
||||
validData += updateEntry(preamps,row,columnPreamplifier,mem.preamp);
|
||||
validData += updateEntry(antennas,row,columnAntenna,mem.antenna);
|
||||
validData += updateEntry(ipplus,row,columnIPPlus,mem.ipplus);
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnOffset),QString::number(double(mem.duplexOffset.Hz/10000.0),'f',3));
|
||||
validData++;
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnOffsetB),QString::number(double(mem.duplexOffsetB.Hz/10000.0),'f',3));
|
||||
validData++;
|
||||
|
||||
if (checkASCII(mem.UR)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnUR),QString(mem.UR));
|
||||
validData++;
|
||||
} else
|
||||
qInfo() << "Invalid data in ur";
|
||||
|
||||
if (checkASCII(mem.URB)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnURB),QString(mem.URB));
|
||||
validData++;
|
||||
} else
|
||||
qInfo() << "Invalid data in urb";
|
||||
|
||||
|
||||
if (checkASCII(mem.R1)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnR1),QString(mem.R1));
|
||||
validData++;
|
||||
} else
|
||||
qInfo() << "Invalid data in r1";
|
||||
|
||||
|
||||
if (checkASCII(mem.R1B)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnR1B),QString(mem.R1B));
|
||||
validData++;
|
||||
} else
|
||||
qInfo() << "Invalid data in r1b";
|
||||
|
||||
|
||||
if (checkASCII(mem.R2)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnR2),QString(mem.R2));
|
||||
validData++;
|
||||
} else
|
||||
qInfo() << "Invalid data in r2";
|
||||
|
||||
|
||||
if (checkASCII(mem.R2B)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnR2B),QString(mem.R2B));
|
||||
validData++;
|
||||
} else
|
||||
qInfo() << "Invalid data in r2b";
|
||||
|
||||
|
||||
if (checkASCII(mem.name)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnName),QString(mem.name));
|
||||
validData++;
|
||||
} else {
|
||||
qInfo() << "Invalid data in name";
|
||||
}
|
||||
|
||||
// These are optional so don't update validdata
|
||||
updateEntry(p25Sql,row,columnP25Sql,mem.p25Sql);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnP25Nac),QString::number(mem.p25Nac,16).rightJustified(3,'0'));
|
||||
updateEntry(dPmrSql,row,columnDPmrSql,mem.dPmrSql);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDPmrComid),QString::number(mem.dPmrComid).rightJustified(3,'0'));
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDPmrCc),QString::number(mem.dPmrCc).rightJustified(2,'0'));
|
||||
updateEntry(dPmrSCRM,row,columnDPmrSCRM,mem.dPmrSCRM);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDPmrKey),QString::number(mem.dPmrKey).rightJustified(5,'0'));
|
||||
updateEntry(nxdnSql,row,columnNxdnSql,mem.nxdnSql);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnNxdnRan),QString::number(mem.nxdnRan).rightJustified(2,'0'));
|
||||
updateEntry(nxdnEnc,row,columnNxdnEnc,mem.nxdnEnc);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnNxdnKey),QString::number(mem.nxdnKey).rightJustified(5,'0'));
|
||||
updateEntry(dcrSql,row,columnDcrSql,mem.dcrSql);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDcrUc),QString::number(mem.dcrUc).rightJustified(3,'0'));
|
||||
updateEntry(dcrEnc,row,columnDcrEnc,mem.dcrEnc);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDcrKey),QString::number(mem.dcrKey).rightJustified(5,'0'));
|
||||
|
||||
// Do this after all other fields to ensure they have been populated.
|
||||
for (uint i=0;i<rigCaps->modes.size();i++)
|
||||
{
|
||||
if (mem.mode == rigCaps->modes[i].reg)
|
||||
{
|
||||
validData += updateEntry(modes,row,columnMode,i);
|
||||
// This mode is the one we are interested in!
|
||||
configColumns(row, rigCaps->modes[i]);
|
||||
}
|
||||
if (mem.modeB == rigCaps->modes[i].reg)
|
||||
{
|
||||
validData += updateEntry(modes,row,columnModeB,i);
|
||||
configColumnsB(row, rigCaps->modes[i]);
|
||||
}
|
||||
}
|
||||
|
||||
ui->table->blockSignals(false);
|
||||
|
||||
if (store)
|
||||
{
|
||||
on_table_cellChanged(row,columnNum); // Force an attempt to store this row.
|
||||
}
|
||||
|
||||
return validData;
|
||||
}
|
||||
|
||||
void memories::rowAdded(int row, memoryType mem)
|
||||
{
|
||||
// Find the next available memory number:
|
||||
|
||||
|
@ -301,69 +517,10 @@ void memories::rowAdded(int row)
|
|||
queue->add(priorityImmediate,queueItem(funcMemoryGroup,QVariant::fromValue<uint>(quint16(ui->group->currentData().toUInt()))));
|
||||
queue->add(priorityImmediate,queueItem(selectCommand,QVariant::fromValue<uint>((quint32((ui->group->currentData().toUInt() << 16) | num)))));
|
||||
});
|
||||
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:
|
||||
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,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,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,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),"5");
|
||||
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]);
|
||||
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,columnDVSquelch) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDVSquelch),"00");
|
||||
if (ui->table->item(row,columnOffset) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnOffset),"0.000");
|
||||
if (ui->table->item(row,columnUR) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnUR),"CQCQCQ ");
|
||||
if (ui->table->item(row,columnR1) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnR1)," ");
|
||||
if (ui->table->item(row,columnR2) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnR2)," ");
|
||||
|
||||
if (ui->table->item(row,columnP25Sql) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnP25Sql),p25Sql[0]);
|
||||
if (ui->table->item(row,columnP25Nac) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnP25Nac),"293");
|
||||
updateEntry(row,columnNum,QString::number(num).rightJustified(3,'0'));
|
||||
|
||||
if (ui->table->item(row,columnDPmrSql) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDPmrSql),dPmrSql[0]);
|
||||
if (ui->table->item(row,columnDPmrComid) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDPmrComid),"000");
|
||||
if (ui->table->item(row,columnDPmrCc) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDPmrCc),"00");
|
||||
if (ui->table->item(row,columnDPmrSCRM) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDPmrSCRM),dPmrSCRM[0]);
|
||||
if (ui->table->item(row,columnDPmrKey) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDPmrKey),"00001");
|
||||
|
||||
if (ui->table->item(row,columnNxdnSql) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnNxdnSql),nxdnSql[0]);
|
||||
if (ui->table->item(row,columnNxdnRan) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnNxdnRan),"00");
|
||||
if (ui->table->item(row,columnNxdnEnc) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnNxdnEnc),nxdnEnc[0]);
|
||||
if (ui->table->item(row,columnNxdnKey) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnNxdnKey),"00001");
|
||||
|
||||
if (ui->table->item(row,columnDcrSql) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDcrSql),dcrSql[0]);
|
||||
if (ui->table->item(row,columnDcrUc) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDcrUc),"000");
|
||||
if (ui->table->item(row,columnDcrEnc) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDcrEnc),dcrEnc[0]);
|
||||
if (ui->table->item(row,columnDcrKey) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDcrKey),"00001");
|
||||
|
||||
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,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]);
|
||||
if (ui->table->item(row,columnDVSquelchB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDVSquelchB),"00");
|
||||
if (ui->table->item(row,columnOffsetB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnOffsetB),"0.000");
|
||||
if (ui->table->item(row,columnDuplexB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnDuplexB),duplexModes[0]);
|
||||
if (ui->table->item(row,columnURB) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnURB),"CQCQCQ ");
|
||||
if (ui->table->item(row,columnR1B) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnR1B)," ");
|
||||
if (ui->table->item(row,columnR2B) == NULL) ui->table->model()->setData(ui->table->model()->index(row,columnR2B)," ");
|
||||
ui->table->item(row,columnNum)->setFlags(ui->table->item(row,columnNum)->flags() | Qt::ItemIsEditable);
|
||||
ui->table->blockSignals(false);
|
||||
|
||||
on_table_cellChanged(row,columnNum); // Force an attempt to store this row.
|
||||
updateRow(row,mem);
|
||||
}
|
||||
|
||||
void memories::rowDeleted(quint32 mem)
|
||||
|
@ -610,9 +767,13 @@ void memories::on_table_cellChanged(int row, int col)
|
|||
|
||||
for (auto &m: rigCaps->modes){
|
||||
if (!ui->table->isColumnHidden(columnMode) && ui->table->item(row,columnMode) != NULL && ui->table->item(row,columnMode)->text()==m.name) {
|
||||
// This mode is the one we are interested in!
|
||||
// This mode is the one we are interested in!
|
||||
configColumns(row,m);
|
||||
qInfo() << "Updating row" << row << "with mode" << m.name;
|
||||
break;
|
||||
}
|
||||
if (!ui->table->isColumnHidden(columnModeB) && ui->table->item(row,columnModeB) != NULL && ui->table->item(row,columnModeB)->text()==m.name) {
|
||||
// This mode is the one we are interested in!
|
||||
configColumnsB(row,m);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -1510,156 +1671,7 @@ void memories::receiveMemory(memoryType mem)
|
|||
ui->table->item(row,columnNum)->setBackground(Qt::transparent);
|
||||
validData++;
|
||||
|
||||
validData += updateCombo(split,row,columnSplit,mem.split);
|
||||
|
||||
|
||||
validData += updateCombo(skip,row,columnSkip,mem.skip);
|
||||
|
||||
validData += updateCombo(scan,row,columnScan,mem.scan);
|
||||
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnFrequency),QString::number(double(mem.frequency.Hz/1000000.0),'f',5));
|
||||
validData++;
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnFrequencyB),QString::number(double(mem.frequencyB.Hz/1000000.0),'f',5));
|
||||
validData++;
|
||||
|
||||
|
||||
// Make sure these are populated before mode so they can be enabled/disabled.
|
||||
validData += updateCombo(toneModes,row,columnToneMode,mem.tonemode);
|
||||
validData += updateCombo(toneModes,row,columnToneModeB,mem.tonemodeB);
|
||||
|
||||
validData += updateCombo(dsql,row,columnDSQL,mem.dsql);
|
||||
validData += updateCombo(dsql,row,columnDSQLB,mem.dsqlB);
|
||||
|
||||
validData += updateCombo(tones,row,columnTSQL,mem.tsql);
|
||||
validData += updateCombo(tones,row,columnTSQLB,mem.tsqlB);
|
||||
|
||||
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(dtcs,row,columnDTCS,QString::number(mem.dtcs).rightJustified(3,'0'));
|
||||
validData += updateCombo(dtcs,row,columnDTCSB,QString::number(mem.dtcsB).rightJustified(3,'0'));
|
||||
|
||||
validData += updateCombo(dtcsp,row,columnDTCSPolarity,mem.dtcsp);
|
||||
validData += updateCombo(dtcsp,row,columnDTCSPolarityB,mem.dtcspB);
|
||||
|
||||
validData += updateCombo(dataModes,row,columnData,mem.datamode);
|
||||
validData += updateCombo(dataModes,row,columnDataB,mem.datamodeB);
|
||||
|
||||
if (rigCaps->manufacturer == manufKenwood) {
|
||||
validData += updateCombo(filters,row,columnFilter,mem.filter);
|
||||
validData += updateCombo(filters,row,columnFilterB,mem.filterB);
|
||||
} else {
|
||||
validData += updateCombo(filters,row,columnFilter,mem.filter-1);
|
||||
validData += updateCombo(filters,row,columnFilterB,mem.filterB-1);
|
||||
}
|
||||
validData += updateCombo(duplexModes,row,columnDuplex,mem.duplex);
|
||||
validData += updateCombo(duplexModes,row,columnDuplexB,mem.duplexB);
|
||||
|
||||
validData += updateCombo(tones,row,columnTone,mem.tone);
|
||||
validData += updateCombo(tones,row,columnToneB,mem.toneB);
|
||||
|
||||
validData += updateCombo(tuningSteps,row,columnTuningStep,mem.tuningStep);
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnCustomTuningStep),QString::number(mem.progTs));
|
||||
validData++;
|
||||
|
||||
if (ui->table->item(row,columnTuningStep) != NULL && ui->table->item(row,columnTuningStep)->text() != "Prog")
|
||||
ui->table->item(row,columnCustomTuningStep)->setFlags(ui->table->item(row,columnCustomTuningStep)->flags() & ~Qt::ItemIsEnabled);
|
||||
|
||||
validData += updateCombo(attenuators,row,columnAttenuator,mem.atten);
|
||||
validData += updateCombo(preamps,row,columnPreamplifier,mem.preamp);
|
||||
validData += updateCombo(antennas,row,columnAntenna,mem.antenna);
|
||||
validData += updateCombo(ipplus,row,columnIPPlus,mem.ipplus);
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnOffset),QString::number(double(mem.duplexOffset.Hz/10000.0),'f',3));
|
||||
validData++;
|
||||
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnOffsetB),QString::number(double(mem.duplexOffsetB.Hz/10000.0),'f',3));
|
||||
validData++;
|
||||
|
||||
if (checkASCII(mem.UR)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnUR),QString(mem.UR));
|
||||
validData++;
|
||||
} else
|
||||
qInfo() << "Invalid data in ur";
|
||||
|
||||
if (checkASCII(mem.URB)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnURB),QString(mem.URB));
|
||||
validData++;
|
||||
} else
|
||||
qInfo() << "Invalid data in urb";
|
||||
|
||||
|
||||
if (checkASCII(mem.R1)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnR1),QString(mem.R1));
|
||||
validData++;
|
||||
} else
|
||||
qInfo() << "Invalid data in r1";
|
||||
|
||||
|
||||
if (checkASCII(mem.R1B)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnR1B),QString(mem.R1B));
|
||||
validData++;
|
||||
} else
|
||||
qInfo() << "Invalid data in r1b";
|
||||
|
||||
|
||||
if (checkASCII(mem.R2)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnR2),QString(mem.R2));
|
||||
validData++;
|
||||
} else
|
||||
qInfo() << "Invalid data in r2";
|
||||
|
||||
|
||||
if (checkASCII(mem.R2B)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnR2B),QString(mem.R2B));
|
||||
validData++;
|
||||
} else
|
||||
qInfo() << "Invalid data in r2b";
|
||||
|
||||
|
||||
if (checkASCII(mem.name)) {
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnName),QString(mem.name));
|
||||
validData++;
|
||||
} else {
|
||||
qInfo() << "Invalid data in name";
|
||||
}
|
||||
|
||||
// These are optional so don't update validdata
|
||||
updateCombo(p25Sql,row,columnP25Sql,mem.p25Sql);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnP25Nac),QString::number(mem.p25Nac,16).rightJustified(3,'0'));
|
||||
updateCombo(dPmrSql,row,columnDPmrSql,mem.dPmrSql);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDPmrComid),QString::number(mem.dPmrComid).rightJustified(3,'0'));
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDPmrCc),QString::number(mem.dPmrCc).rightJustified(2,'0'));
|
||||
updateCombo(dPmrSCRM,row,columnDPmrSCRM,mem.dPmrSCRM);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDPmrKey),QString::number(mem.dPmrKey).rightJustified(5,'0'));
|
||||
updateCombo(nxdnSql,row,columnNxdnSql,mem.nxdnSql);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnNxdnRan),QString::number(mem.nxdnRan).rightJustified(2,'0'));
|
||||
updateCombo(nxdnEnc,row,columnNxdnEnc,mem.nxdnEnc);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnNxdnKey),QString::number(mem.nxdnKey).rightJustified(5,'0'));
|
||||
updateCombo(dcrSql,row,columnDcrSql,mem.dcrSql);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDcrUc),QString::number(mem.dcrUc).rightJustified(3,'0'));
|
||||
updateCombo(dcrEnc,row,columnDcrEnc,mem.dcrEnc);
|
||||
ui->table->model()->setData(ui->table->model()->index(row,columnDcrKey),QString::number(mem.dcrKey).rightJustified(5,'0'));
|
||||
|
||||
// Do this after all other fields to ensure they have been populated.
|
||||
for (uint i=0;i<rigCaps->modes.size();i++)
|
||||
{
|
||||
if (mem.mode == rigCaps->modes[i].reg)
|
||||
{
|
||||
validData += updateCombo(modes,row,columnMode,i);
|
||||
// This mode is the one we are interested in!
|
||||
configColumns(row, rigCaps->modes[i]);
|
||||
}
|
||||
if (mem.modeB == rigCaps->modes[i].reg)
|
||||
{
|
||||
validData += updateCombo(modes,row,columnModeB,i);
|
||||
}
|
||||
}
|
||||
|
||||
ui->table->blockSignals(false);
|
||||
validData = validData + updateRow(row,mem,false);
|
||||
|
||||
if (retries > 2)
|
||||
{
|
||||
|
@ -1686,8 +1698,7 @@ void memories::receiveMemory(memoryType mem)
|
|||
|
||||
}
|
||||
|
||||
|
||||
int memories::updateCombo(QStringList& combo, int row, columns column, quint8 data)
|
||||
int memories::updateEntry(QStringList& combo, int row, columns column, quint8 data)
|
||||
{
|
||||
int ret=1;
|
||||
if (!ui->table->isColumnHidden(column) && combo.size() > data)
|
||||
|
@ -1696,7 +1707,7 @@ int memories::updateCombo(QStringList& combo, int row, columns column, quint8 d
|
|||
}
|
||||
else if (!ui->table->isColumnHidden(column))
|
||||
{
|
||||
qInfo() << "Column" << ui->table->horizontalHeaderItem(column)->text() << "Invalid data received:" << data << "setting to default";
|
||||
qInfo() << "Column" << ui->table->horizontalHeaderItem(column)->text() << "Invalid data:" << data << "setting to default";
|
||||
ui->table->model()->setData(ui->table->model()->index(row,column),combo[0]);
|
||||
ret=1;
|
||||
} else {
|
||||
|
@ -1705,7 +1716,7 @@ int memories::updateCombo(QStringList& combo, int row, columns column, quint8 d
|
|||
return ret;
|
||||
}
|
||||
|
||||
int memories::updateCombo(QStringList& combo, int row, columns column, QString data)
|
||||
int memories::updateEntry(QStringList& combo, int row, columns column, QString data)
|
||||
{
|
||||
int ret=1;
|
||||
if (!ui->table->isColumnHidden(column) && combo.contains(data))
|
||||
|
@ -1714,7 +1725,7 @@ int memories::updateCombo(QStringList& combo, int row, columns column, QString
|
|||
}
|
||||
else if (!ui->table->isColumnHidden(column))
|
||||
{
|
||||
qInfo() << "Column" << ui->table->horizontalHeaderItem(column)->text() << "Invalid data received:" << data;
|
||||
qInfo() << "Column" << ui->table->horizontalHeaderItem(column)->text() << "Invalid data:" << data;
|
||||
ret=0;
|
||||
} else {
|
||||
ret=0;
|
||||
|
@ -1722,6 +1733,18 @@ int memories::updateCombo(QStringList& combo, int row, columns column, QString
|
|||
return ret;
|
||||
}
|
||||
|
||||
int memories::updateEntry(int row, columns column, QString data)
|
||||
{
|
||||
int ret=0;
|
||||
if (!ui->table->isColumnHidden(column))
|
||||
{
|
||||
ui->table->model()->setData(ui->table->model()->index(row,column),data);
|
||||
ret=1;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
bool memories::checkASCII(QString str)
|
||||
{
|
||||
static QRegularExpression exp = QRegularExpression(QStringLiteral("[^\\x{0020}-\\x{007E}]"));
|
||||
|
@ -2104,3 +2127,37 @@ void memories::configColumns(int row, modeInfo mode) {
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void memories::configColumnsB(int row, modeInfo mode) {
|
||||
|
||||
enableCell(row,columnToneB,false);
|
||||
enableCell(row,columnToneModeB,false);
|
||||
enableCell(row,columnTSQLB,false);
|
||||
enableCell(row,columnDTCSB,false);
|
||||
enableCell(row,columnDTCSPolarityB,false);
|
||||
enableCell(row,columnDVSquelchB,false);
|
||||
enableCell(row,columnDSQLB,false);
|
||||
enableCell(row,columnR1B,false);
|
||||
enableCell(row,columnR2B,false);
|
||||
enableCell(row,columnURB,false);
|
||||
|
||||
switch (mode.mk)
|
||||
{
|
||||
case modeFM:
|
||||
enableCell(row,columnToneB,true);
|
||||
enableCell(row,columnToneModeB,true);
|
||||
enableCell(row,columnTSQLB,true);
|
||||
enableCell(row,columnDTCSB,true);
|
||||
enableCell(row,columnDTCSPolarityB,true);
|
||||
break;
|
||||
case modeDV:
|
||||
enableCell(row,columnDVSquelchB,true);
|
||||
enableCell(row,columnDSQLB,true);
|
||||
enableCell(row,columnR1B,true);
|
||||
enableCell(row,columnR2B,true);
|
||||
enableCell(row,columnURB,true);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
15
memories.h
15
memories.h
|
@ -50,9 +50,9 @@ private slots:
|
|||
|
||||
|
||||
void receiveMemory(memoryType mem);
|
||||
void rowAdded(int row);
|
||||
void rowAdded(int row, memoryType mem=memoryType());
|
||||
void rowDeleted(quint32 mem);
|
||||
|
||||
void menuAction(QAction* action, quint32 mem);
|
||||
void timeout();
|
||||
|
||||
private:
|
||||
|
@ -295,8 +295,11 @@ private:
|
|||
totalColumns
|
||||
};
|
||||
|
||||
int updateCombo(QStringList& combo, int row, columns column, quint8 data);
|
||||
int updateCombo(QStringList& combo, int row, columns column, QString data);
|
||||
int updateRow(int row, memoryType mem, bool store=true);
|
||||
|
||||
int updateEntry(QStringList& combo, int row, columns column, quint8 data);
|
||||
int updateEntry(QStringList& combo, int row, columns column, QString data);
|
||||
int updateEntry(int row, columns column, QString data);
|
||||
|
||||
struct stepType {
|
||||
stepType(){};
|
||||
|
@ -323,7 +326,11 @@ private:
|
|||
|
||||
void enableCell(int col, int row, bool en);
|
||||
void configColumns(int row, modeInfo mode);
|
||||
void configColumnsB(int row, modeInfo mode);
|
||||
bool disableCommands = false;
|
||||
|
||||
QAction *addCurrent = new QAction("Add Current");
|
||||
QAction *useCurrent = new QAction("Use Current");
|
||||
};
|
||||
|
||||
#endif // MEMORIES_H
|
||||
|
|
367
rigs/TS-890S.rig
367
rigs/TS-890S.rig
|
@ -474,80 +474,80 @@ Commands\50\Command29=false
|
|||
Commands\50\GetCommand=true
|
||||
Commands\50\SetCommand=true
|
||||
Commands\50\Admin=false
|
||||
Commands\51\Type=Key Speed
|
||||
Commands\51\String=KS
|
||||
Commands\51\Min=4
|
||||
Commands\51\Max=60
|
||||
Commands\51\Bytes=3
|
||||
Commands\51\Type=IF Shift
|
||||
Commands\51\String=IS
|
||||
Commands\51\Min=0
|
||||
Commands\51\Max=0
|
||||
Commands\51\Bytes=0
|
||||
Commands\51\Command29=false
|
||||
Commands\51\GetCommand=true
|
||||
Commands\51\SetCommand=true
|
||||
Commands\51\Admin=false
|
||||
Commands\52\Type=Send CW
|
||||
Commands\52\String=KY
|
||||
Commands\52\Min=0
|
||||
Commands\52\Max=0
|
||||
Commands\52\Bytes=24
|
||||
Commands\52\Type=Key Speed
|
||||
Commands\52\String=KS
|
||||
Commands\52\Min=4
|
||||
Commands\52\Max=60
|
||||
Commands\52\Bytes=3
|
||||
Commands\52\Command29=false
|
||||
Commands\52\GetCommand=false
|
||||
Commands\52\GetCommand=true
|
||||
Commands\52\SetCommand=true
|
||||
Commands\52\Admin=false
|
||||
Commands\53\Type=Lock Function
|
||||
Commands\53\String=LK
|
||||
Commands\53\Type=Send CW
|
||||
Commands\53\String=KY
|
||||
Commands\53\Min=0
|
||||
Commands\53\Max=1
|
||||
Commands\53\Bytes=1
|
||||
Commands\53\Max=0
|
||||
Commands\53\Bytes=24
|
||||
Commands\53\Command29=false
|
||||
Commands\53\GetCommand=true
|
||||
Commands\53\GetCommand=false
|
||||
Commands\53\SetCommand=true
|
||||
Commands\53\Admin=false
|
||||
Commands\54\Type=Memory Contents
|
||||
Commands\54\String=MA0
|
||||
Commands\54\Type=Lock Function
|
||||
Commands\54\String=LK
|
||||
Commands\54\Min=0
|
||||
Commands\54\Max=119
|
||||
Commands\54\Bytes=3
|
||||
Commands\54\Max=1
|
||||
Commands\54\Bytes=1
|
||||
Commands\54\Command29=false
|
||||
Commands\54\GetCommand=true
|
||||
Commands\54\SetCommand=true
|
||||
Commands\54\Admin=false
|
||||
Commands\55\Type=Memory Num Select
|
||||
Commands\55\String=MC
|
||||
Commands\55\Type=Memory Contents
|
||||
Commands\55\String=MA0
|
||||
Commands\55\Min=0
|
||||
Commands\55\Max=99
|
||||
Commands\55\Max=119
|
||||
Commands\55\Bytes=3
|
||||
Commands\55\Command29=false
|
||||
Commands\55\GetCommand=true
|
||||
Commands\55\SetCommand=true
|
||||
Commands\55\Admin=false
|
||||
Commands\56\Type=Mic Gain
|
||||
Commands\56\String=MG
|
||||
Commands\56\Type=Memory Num Select
|
||||
Commands\56\String=MC
|
||||
Commands\56\Min=0
|
||||
Commands\56\Max=100
|
||||
Commands\56\Max=99
|
||||
Commands\56\Bytes=3
|
||||
Commands\56\Command29=false
|
||||
Commands\56\GetCommand=true
|
||||
Commands\56\SetCommand=true
|
||||
Commands\56\Admin=false
|
||||
Commands\57\Type=Monitor Gain
|
||||
Commands\57\String=ML
|
||||
Commands\57\Type=Mic Gain
|
||||
Commands\57\String=MG
|
||||
Commands\57\Min=0
|
||||
Commands\57\Max=20
|
||||
Commands\57\Max=100
|
||||
Commands\57\Bytes=3
|
||||
Commands\57\Command29=false
|
||||
Commands\57\GetCommand=true
|
||||
Commands\57\SetCommand=true
|
||||
Commands\57\Admin=false
|
||||
Commands\58\Type=Data Off Mod Input
|
||||
Commands\58\String=MS0
|
||||
Commands\58\Type=Monitor Gain
|
||||
Commands\58\String=ML
|
||||
Commands\58\Min=0
|
||||
Commands\58\Max=3
|
||||
Commands\58\Bytes=2
|
||||
Commands\58\Max=20
|
||||
Commands\58\Bytes=3
|
||||
Commands\58\Command29=false
|
||||
Commands\58\GetCommand=true
|
||||
Commands\58\SetCommand=true
|
||||
Commands\58\Admin=false
|
||||
Commands\59\Type=DATA1 Mod Input
|
||||
Commands\59\String=MS1
|
||||
Commands\59\Type=Data Off Mod Input
|
||||
Commands\59\String=MS0
|
||||
Commands\59\Min=0
|
||||
Commands\59\Max=3
|
||||
Commands\59\Bytes=2
|
||||
|
@ -555,53 +555,53 @@ Commands\59\Command29=false
|
|||
Commands\59\GetCommand=true
|
||||
Commands\59\SetCommand=true
|
||||
Commands\59\Admin=false
|
||||
Commands\60\Type=Noise Blanker
|
||||
Commands\60\String=NB1
|
||||
Commands\60\Type=DATA1 Mod Input
|
||||
Commands\60\String=MS1
|
||||
Commands\60\Min=0
|
||||
Commands\60\Max=1
|
||||
Commands\60\Bytes=1
|
||||
Commands\60\Max=3
|
||||
Commands\60\Bytes=2
|
||||
Commands\60\Command29=false
|
||||
Commands\60\GetCommand=true
|
||||
Commands\60\SetCommand=true
|
||||
Commands\60\Admin=false
|
||||
Commands\61\Type=NB Level
|
||||
Commands\61\String=NL
|
||||
Commands\61\Type=Noise Blanker
|
||||
Commands\61\String=NB1
|
||||
Commands\61\Min=0
|
||||
Commands\61\Max=10
|
||||
Commands\61\Bytes=3
|
||||
Commands\61\Max=1
|
||||
Commands\61\Bytes=1
|
||||
Commands\61\Command29=false
|
||||
Commands\61\GetCommand=true
|
||||
Commands\61\SetCommand=true
|
||||
Commands\61\Admin=false
|
||||
Commands\62\Type=Noise Reduction
|
||||
Commands\62\String=NR
|
||||
Commands\62\Type=NB Level
|
||||
Commands\62\String=NL
|
||||
Commands\62\Min=0
|
||||
Commands\62\Max=2
|
||||
Commands\62\Bytes=1
|
||||
Commands\62\Max=10
|
||||
Commands\62\Bytes=3
|
||||
Commands\62\Command29=false
|
||||
Commands\62\GetCommand=true
|
||||
Commands\62\SetCommand=true
|
||||
Commands\62\Admin=false
|
||||
Commands\63\Type=Notch Filter
|
||||
Commands\63\String=NT
|
||||
Commands\63\Type=Noise Reduction
|
||||
Commands\63\String=NR
|
||||
Commands\63\Min=0
|
||||
Commands\63\Max=2
|
||||
Commands\63\Bytes=2
|
||||
Commands\63\Bytes=1
|
||||
Commands\63\Command29=false
|
||||
Commands\63\GetCommand=true
|
||||
Commands\63\SetCommand=true
|
||||
Commands\63\Admin=false
|
||||
Commands\64\Type=Selected Mode
|
||||
Commands\64\String=OM0
|
||||
Commands\64\Min=1
|
||||
Commands\64\Max=9
|
||||
Commands\64\Bytes=1
|
||||
Commands\64\Type=Notch Filter
|
||||
Commands\64\String=NT
|
||||
Commands\64\Min=0
|
||||
Commands\64\Max=2
|
||||
Commands\64\Bytes=2
|
||||
Commands\64\Command29=false
|
||||
Commands\64\GetCommand=true
|
||||
Commands\64\SetCommand=true
|
||||
Commands\64\Admin=false
|
||||
Commands\65\Type=Unselected Mode
|
||||
Commands\65\String=OM1
|
||||
Commands\65\Type=Selected Mode
|
||||
Commands\65\String=OM0
|
||||
Commands\65\Min=1
|
||||
Commands\65\Max=9
|
||||
Commands\65\Bytes=1
|
||||
|
@ -609,26 +609,26 @@ Commands\65\Command29=false
|
|||
Commands\65\GetCommand=true
|
||||
Commands\65\SetCommand=true
|
||||
Commands\65\Admin=false
|
||||
Commands\66\Type=Preamp Status
|
||||
Commands\66\String=PA
|
||||
Commands\66\Min=0
|
||||
Commands\66\Max=2
|
||||
Commands\66\Type=Unselected Mode
|
||||
Commands\66\String=OM1
|
||||
Commands\66\Min=1
|
||||
Commands\66\Max=9
|
||||
Commands\66\Bytes=1
|
||||
Commands\66\Command29=false
|
||||
Commands\66\GetCommand=true
|
||||
Commands\66\SetCommand=true
|
||||
Commands\66\Admin=false
|
||||
Commands\67\Type=RF Power
|
||||
Commands\67\String=PC
|
||||
Commands\67\Type=Preamp Status
|
||||
Commands\67\String=PA
|
||||
Commands\67\Min=0
|
||||
Commands\67\Max=100
|
||||
Commands\67\Bytes=3
|
||||
Commands\67\Max=2
|
||||
Commands\67\Bytes=1
|
||||
Commands\67\Command29=false
|
||||
Commands\67\GetCommand=true
|
||||
Commands\67\SetCommand=true
|
||||
Commands\67\Admin=false
|
||||
Commands\68\Type=Compressor Level
|
||||
Commands\68\String=PL
|
||||
Commands\68\Type=RF Power
|
||||
Commands\68\String=PC
|
||||
Commands\68\Min=0
|
||||
Commands\68\Max=100
|
||||
Commands\68\Bytes=3
|
||||
|
@ -636,17 +636,17 @@ Commands\68\Command29=false
|
|||
Commands\68\GetCommand=true
|
||||
Commands\68\SetCommand=true
|
||||
Commands\68\Admin=false
|
||||
Commands\69\Type=Compressor Status
|
||||
Commands\69\String=PR0
|
||||
Commands\69\Type=Compressor Level
|
||||
Commands\69\String=PL
|
||||
Commands\69\Min=0
|
||||
Commands\69\Max=1
|
||||
Commands\69\Bytes=1
|
||||
Commands\69\Max=100
|
||||
Commands\69\Bytes=3
|
||||
Commands\69\Command29=false
|
||||
Commands\69\GetCommand=true
|
||||
Commands\69\SetCommand=true
|
||||
Commands\69\Admin=false
|
||||
Commands\70\Type=Power Control
|
||||
Commands\70\String=PS
|
||||
Commands\70\Type=Compressor Status
|
||||
Commands\70\String=PR0
|
||||
Commands\70\Min=0
|
||||
Commands\70\Max=1
|
||||
Commands\70\Bytes=1
|
||||
|
@ -654,62 +654,62 @@ Commands\70\Command29=false
|
|||
Commands\70\GetCommand=true
|
||||
Commands\70\SetCommand=true
|
||||
Commands\70\Admin=false
|
||||
Commands\71\Type=Attenuator Status
|
||||
Commands\71\String=RA
|
||||
Commands\71\Type=Power Control
|
||||
Commands\71\String=PS
|
||||
Commands\71\Min=0
|
||||
Commands\71\Max=3
|
||||
Commands\71\Max=1
|
||||
Commands\71\Bytes=1
|
||||
Commands\71\Command29=false
|
||||
Commands\71\GetCommand=true
|
||||
Commands\71\SetCommand=true
|
||||
Commands\71\Admin=false
|
||||
Commands\72\Type=RIT Frequency Down
|
||||
Commands\72\String=RD
|
||||
Commands\72\Type=Attenuator Status
|
||||
Commands\72\String=RA
|
||||
Commands\72\Min=0
|
||||
Commands\72\Max=9999
|
||||
Commands\72\Bytes=5
|
||||
Commands\72\Max=3
|
||||
Commands\72\Bytes=1
|
||||
Commands\72\Command29=false
|
||||
Commands\72\GetCommand=true
|
||||
Commands\72\SetCommand=true
|
||||
Commands\72\Admin=false
|
||||
Commands\73\Type=RF Gain
|
||||
Commands\73\String=RG
|
||||
Commands\73\Type=RIT Frequency Down
|
||||
Commands\73\String=RD
|
||||
Commands\73\Min=0
|
||||
Commands\73\Max=255
|
||||
Commands\73\Bytes=3
|
||||
Commands\73\Max=9999
|
||||
Commands\73\Bytes=5
|
||||
Commands\73\Command29=false
|
||||
Commands\73\GetCommand=true
|
||||
Commands\73\SetCommand=true
|
||||
Commands\73\Admin=false
|
||||
Commands\74\Type=RX Freq And Mode
|
||||
Commands\74\String=RI
|
||||
Commands\74\Type=RF Gain
|
||||
Commands\74\String=RG
|
||||
Commands\74\Min=0
|
||||
Commands\74\Max=0
|
||||
Commands\74\Bytes=0
|
||||
Commands\74\Max=255
|
||||
Commands\74\Bytes=3
|
||||
Commands\74\Command29=false
|
||||
Commands\74\GetCommand=true
|
||||
Commands\74\SetCommand=true
|
||||
Commands\74\Admin=false
|
||||
Commands\75\Type=NR Level
|
||||
Commands\75\String=RL
|
||||
Commands\75\Min=1
|
||||
Commands\75\Max=10
|
||||
Commands\75\Bytes=2
|
||||
Commands\75\Type=RX Freq And Mode
|
||||
Commands\75\String=RI
|
||||
Commands\75\Min=0
|
||||
Commands\75\Max=0
|
||||
Commands\75\Bytes=0
|
||||
Commands\75\Command29=false
|
||||
Commands\75\GetCommand=true
|
||||
Commands\75\SetCommand=true
|
||||
Commands\75\Admin=false
|
||||
Commands\76\Type=ALC Meter
|
||||
Commands\76\String=RM1
|
||||
Commands\76\Min=0
|
||||
Commands\76\Max=70
|
||||
Commands\76\Bytes=4
|
||||
Commands\76\Type=NR Level
|
||||
Commands\76\String=RL
|
||||
Commands\76\Min=1
|
||||
Commands\76\Max=10
|
||||
Commands\76\Bytes=2
|
||||
Commands\76\Command29=false
|
||||
Commands\76\GetCommand=false
|
||||
Commands\76\GetCommand=true
|
||||
Commands\76\SetCommand=true
|
||||
Commands\76\Admin=false
|
||||
Commands\77\Type=SWR Meter
|
||||
Commands\77\String=RM2
|
||||
Commands\77\Type=ALC Meter
|
||||
Commands\77\String=RM1
|
||||
Commands\77\Min=0
|
||||
Commands\77\Max=70
|
||||
Commands\77\Bytes=4
|
||||
|
@ -717,8 +717,8 @@ Commands\77\Command29=false
|
|||
Commands\77\GetCommand=false
|
||||
Commands\77\SetCommand=true
|
||||
Commands\77\Admin=false
|
||||
Commands\78\Type=Comp Meter
|
||||
Commands\78\String=RM3
|
||||
Commands\78\Type=SWR Meter
|
||||
Commands\78\String=RM2
|
||||
Commands\78\Min=0
|
||||
Commands\78\Max=70
|
||||
Commands\78\Bytes=4
|
||||
|
@ -726,8 +726,8 @@ Commands\78\Command29=false
|
|||
Commands\78\GetCommand=false
|
||||
Commands\78\SetCommand=true
|
||||
Commands\78\Admin=false
|
||||
Commands\79\Type=Id Meter
|
||||
Commands\79\String=RM4
|
||||
Commands\79\Type=Comp Meter
|
||||
Commands\79\String=RM3
|
||||
Commands\79\Min=0
|
||||
Commands\79\Max=70
|
||||
Commands\79\Bytes=4
|
||||
|
@ -735,8 +735,8 @@ Commands\79\Command29=false
|
|||
Commands\79\GetCommand=false
|
||||
Commands\79\SetCommand=true
|
||||
Commands\79\Admin=false
|
||||
Commands\80\Type=Vd Meter
|
||||
Commands\80\String=RM5
|
||||
Commands\80\Type=Id Meter
|
||||
Commands\80\String=RM4
|
||||
Commands\80\Min=0
|
||||
Commands\80\Max=70
|
||||
Commands\80\Bytes=4
|
||||
|
@ -744,107 +744,107 @@ Commands\80\Command29=false
|
|||
Commands\80\GetCommand=false
|
||||
Commands\80\SetCommand=true
|
||||
Commands\80\Admin=false
|
||||
Commands\81\Type=RIT Status
|
||||
Commands\81\String=RT
|
||||
Commands\81\Type=Vd Meter
|
||||
Commands\81\String=RM5
|
||||
Commands\81\Min=0
|
||||
Commands\81\Max=1
|
||||
Commands\81\Bytes=1
|
||||
Commands\81\Max=70
|
||||
Commands\81\Bytes=4
|
||||
Commands\81\Command29=false
|
||||
Commands\81\GetCommand=true
|
||||
Commands\81\GetCommand=false
|
||||
Commands\81\SetCommand=true
|
||||
Commands\81\Admin=false
|
||||
Commands\82\Type=RIT Frequency Up
|
||||
Commands\82\String=RU
|
||||
Commands\82\Type=RIT Status
|
||||
Commands\82\String=RT
|
||||
Commands\82\Min=0
|
||||
Commands\82\Max=9999
|
||||
Commands\82\Bytes=5
|
||||
Commands\82\Max=1
|
||||
Commands\82\Bytes=1
|
||||
Commands\82\Command29=false
|
||||
Commands\82\GetCommand=true
|
||||
Commands\82\SetCommand=true
|
||||
Commands\82\Admin=false
|
||||
Commands\83\Type=Set Receive Mode
|
||||
Commands\83\String=RX
|
||||
Commands\83\Type=RIT Frequency Up
|
||||
Commands\83\String=RU
|
||||
Commands\83\Min=0
|
||||
Commands\83\Max=0
|
||||
Commands\83\Bytes=0
|
||||
Commands\83\Max=9999
|
||||
Commands\83\Bytes=5
|
||||
Commands\83\Command29=false
|
||||
Commands\83\GetCommand=true
|
||||
Commands\83\SetCommand=true
|
||||
Commands\83\Admin=false
|
||||
Commands\84\Type=Break-In Delay
|
||||
Commands\84\String=SD
|
||||
Commands\84\Type=Set Receive Mode
|
||||
Commands\84\String=RX
|
||||
Commands\84\Min=0
|
||||
Commands\84\Max=1000
|
||||
Commands\84\Bytes=4
|
||||
Commands\84\Max=0
|
||||
Commands\84\Bytes=0
|
||||
Commands\84\Command29=false
|
||||
Commands\84\GetCommand=true
|
||||
Commands\84\SetCommand=true
|
||||
Commands\84\Admin=false
|
||||
Commands\85\Type=PBT Inner
|
||||
Commands\85\String=SH0
|
||||
Commands\85\Type=Break-In Delay
|
||||
Commands\85\String=SD
|
||||
Commands\85\Min=0
|
||||
Commands\85\Max=160
|
||||
Commands\85\Bytes=3
|
||||
Commands\85\Max=1000
|
||||
Commands\85\Bytes=4
|
||||
Commands\85\Command29=false
|
||||
Commands\85\GetCommand=true
|
||||
Commands\85\SetCommand=true
|
||||
Commands\85\Admin=false
|
||||
Commands\86\Type=Filter Width
|
||||
Commands\86\String=SL0
|
||||
Commands\86\Type=PBT Inner
|
||||
Commands\86\String=SH0
|
||||
Commands\86\Min=0
|
||||
Commands\86\Max=35
|
||||
Commands\86\Bytes=2
|
||||
Commands\86\Max=160
|
||||
Commands\86\Bytes=3
|
||||
Commands\86\Command29=false
|
||||
Commands\86\GetCommand=true
|
||||
Commands\86\SetCommand=true
|
||||
Commands\86\Admin=false
|
||||
Commands\87\Type=S Meter
|
||||
Commands\87\String=SM
|
||||
Commands\87\Type=Filter Width
|
||||
Commands\87\String=SL0
|
||||
Commands\87\Min=0
|
||||
Commands\87\Max=70
|
||||
Commands\87\Bytes=4
|
||||
Commands\87\Max=35
|
||||
Commands\87\Bytes=2
|
||||
Commands\87\Command29=false
|
||||
Commands\87\GetCommand=true
|
||||
Commands\87\SetCommand=true
|
||||
Commands\87\Admin=false
|
||||
Commands\88\Type=Squelch
|
||||
Commands\88\String=SQ
|
||||
Commands\88\Type=S Meter
|
||||
Commands\88\String=SM
|
||||
Commands\88\Min=0
|
||||
Commands\88\Max=255
|
||||
Commands\88\Bytes=3
|
||||
Commands\88\Max=70
|
||||
Commands\88\Bytes=4
|
||||
Commands\88\Command29=false
|
||||
Commands\88\GetCommand=true
|
||||
Commands\88\SetCommand=true
|
||||
Commands\88\Admin=false
|
||||
Commands\89\Type=Split/Duplex
|
||||
Commands\89\String=TB
|
||||
Commands\89\Type=Squelch
|
||||
Commands\89\String=SQ
|
||||
Commands\89\Min=0
|
||||
Commands\89\Max=1
|
||||
Commands\89\Bytes=1
|
||||
Commands\89\Max=255
|
||||
Commands\89\Bytes=3
|
||||
Commands\89\Command29=false
|
||||
Commands\89\GetCommand=true
|
||||
Commands\89\SetCommand=true
|
||||
Commands\89\Admin=false
|
||||
Commands\90\Type=Tone Frequency
|
||||
Commands\90\String=TN
|
||||
Commands\90\Type=Split/Duplex
|
||||
Commands\90\String=TB
|
||||
Commands\90\Min=0
|
||||
Commands\90\Max=42
|
||||
Commands\90\Bytes=2
|
||||
Commands\90\Max=1
|
||||
Commands\90\Bytes=1
|
||||
Commands\90\Command29=false
|
||||
Commands\90\GetCommand=true
|
||||
Commands\90\SetCommand=true
|
||||
Commands\90\Admin=false
|
||||
Commands\91\Type=Repeater Tone
|
||||
Commands\91\String=TO
|
||||
Commands\91\Type=Tone Frequency
|
||||
Commands\91\String=TN
|
||||
Commands\91\Min=0
|
||||
Commands\91\Max=1
|
||||
Commands\91\Bytes=1
|
||||
Commands\91\Max=42
|
||||
Commands\91\Bytes=2
|
||||
Commands\91\Command29=false
|
||||
Commands\91\GetCommand=true
|
||||
Commands\91\SetCommand=true
|
||||
Commands\91\Admin=false
|
||||
Commands\92\Type=TF-Set Status
|
||||
Commands\92\String=TS
|
||||
Commands\92\Type=Repeater Tone
|
||||
Commands\92\String=TO
|
||||
Commands\92\Min=0
|
||||
Commands\92\Max=1
|
||||
Commands\92\Bytes=1
|
||||
|
@ -852,8 +852,8 @@ Commands\92\Command29=false
|
|||
Commands\92\GetCommand=true
|
||||
Commands\92\SetCommand=true
|
||||
Commands\92\Admin=false
|
||||
Commands\93\Type=Set Transmit Mode
|
||||
Commands\93\String=TX
|
||||
Commands\93\Type=TF-Set Status
|
||||
Commands\93\String=TS
|
||||
Commands\93\Min=0
|
||||
Commands\93\Max=1
|
||||
Commands\93\Bytes=1
|
||||
|
@ -861,17 +861,17 @@ Commands\93\Command29=false
|
|||
Commands\93\GetCommand=true
|
||||
Commands\93\SetCommand=true
|
||||
Commands\93\Admin=false
|
||||
Commands\94\Type=RX Equalizer
|
||||
Commands\94\String=UR
|
||||
Commands\94\Type=Set Transmit Mode
|
||||
Commands\94\String=TX
|
||||
Commands\94\Min=0
|
||||
Commands\94\Max=0
|
||||
Commands\94\Bytes=36
|
||||
Commands\94\Max=1
|
||||
Commands\94\Bytes=1
|
||||
Commands\94\Command29=false
|
||||
Commands\94\GetCommand=true
|
||||
Commands\94\SetCommand=true
|
||||
Commands\94\Admin=false
|
||||
Commands\95\Type=TX Equalizer
|
||||
Commands\95\String=UT
|
||||
Commands\95\Type=RX Equalizer
|
||||
Commands\95\String=UR
|
||||
Commands\95\Min=0
|
||||
Commands\95\Max=0
|
||||
Commands\95\Bytes=36
|
||||
|
@ -879,43 +879,52 @@ Commands\95\Command29=false
|
|||
Commands\95\GetCommand=true
|
||||
Commands\95\SetCommand=true
|
||||
Commands\95\Admin=false
|
||||
Commands\96\Type=Vox Gain
|
||||
Commands\96\String=VG
|
||||
Commands\96\Type=TX Equalizer
|
||||
Commands\96\String=UT
|
||||
Commands\96\Min=0
|
||||
Commands\96\Max=9
|
||||
Commands\96\Bytes=3
|
||||
Commands\96\Max=0
|
||||
Commands\96\Bytes=36
|
||||
Commands\96\Command29=false
|
||||
Commands\96\GetCommand=true
|
||||
Commands\96\SetCommand=true
|
||||
Commands\96\Admin=false
|
||||
Commands\97\Type=VFO Equal AB
|
||||
Commands\97\String=VV
|
||||
Commands\97\Type=Vox Gain
|
||||
Commands\97\String=VG
|
||||
Commands\97\Min=0
|
||||
Commands\97\Max=0
|
||||
Commands\97\Bytes=0
|
||||
Commands\97\Max=9
|
||||
Commands\97\Bytes=3
|
||||
Commands\97\Command29=false
|
||||
Commands\97\GetCommand=true
|
||||
Commands\97\SetCommand=true
|
||||
Commands\97\Admin=false
|
||||
Commands\98\Type=Vox Status
|
||||
Commands\98\String=VX
|
||||
Commands\98\Type=VFO Equal AB
|
||||
Commands\98\String=VV
|
||||
Commands\98\Min=0
|
||||
Commands\98\Max=1
|
||||
Commands\98\Bytes=1
|
||||
Commands\98\Max=0
|
||||
Commands\98\Bytes=0
|
||||
Commands\98\Command29=false
|
||||
Commands\98\GetCommand=true
|
||||
Commands\98\SetCommand=true
|
||||
Commands\98\Admin=false
|
||||
Commands\99\Type=TX Freq And Mode
|
||||
Commands\99\String=XI
|
||||
Commands\99\Type=Vox Status
|
||||
Commands\99\String=VX
|
||||
Commands\99\Min=0
|
||||
Commands\99\Max=0
|
||||
Commands\99\Bytes=0
|
||||
Commands\99\Max=1
|
||||
Commands\99\Bytes=1
|
||||
Commands\99\Command29=false
|
||||
Commands\99\GetCommand=true
|
||||
Commands\99\SetCommand=true
|
||||
Commands\99\Admin=false
|
||||
Commands\size=99
|
||||
Commands\100\Type=TX Freq And Mode
|
||||
Commands\100\String=XI
|
||||
Commands\100\Min=0
|
||||
Commands\100\Max=0
|
||||
Commands\100\Bytes=0
|
||||
Commands\100\Command29=false
|
||||
Commands\100\GetCommand=true
|
||||
Commands\100\SetCommand=true
|
||||
Commands\100\Admin=false
|
||||
Commands\size=100
|
||||
Periodic\1\Priority=Medium High
|
||||
Periodic\1\Command=AF Gain
|
||||
Periodic\1\VFO=0
|
||||
|
|
|
@ -7,6 +7,10 @@
|
|||
|
||||
tableWidget::tableWidget(QWidget *parent): QTableWidget(parent)
|
||||
{
|
||||
menuActions.append(new QAction("Add Item"));
|
||||
menuActions.append(new QAction("Insert Item"));
|
||||
menuActions.append(new QAction("Clone Item"));
|
||||
menuActions.append(new QAction("Delete Item"));
|
||||
}
|
||||
|
||||
void tableWidget::mouseReleaseEvent(QMouseEvent *event)
|
||||
|
@ -14,30 +18,27 @@ void tableWidget::mouseReleaseEvent(QMouseEvent *event)
|
|||
if(event->button() == Qt::RightButton && editingEnabled)
|
||||
{
|
||||
QMenu menu;
|
||||
QAction *add= menu.addAction("Add Item");
|
||||
QAction *insert= menu.addAction("Insert Item");
|
||||
QAction *clone= menu.addAction("Clone Item");
|
||||
QAction *del = menu.addAction("Delete Item");
|
||||
|
||||
#if (QT_VERSION < QT_VERSION_CHECK(6,0,0))
|
||||
QAction *selectedAction = menu.exec(event->globalPos());
|
||||
QAction *selectedAction = menu.exec(menuActions,event->globalPos());
|
||||
#else
|
||||
QAction *selectedAction = menu.exec(event->globalPosition().toPoint());
|
||||
QAction *selectedAction = menu.exec(menuActions,event->globalPosition().toPoint());
|
||||
#endif
|
||||
|
||||
|
||||
if(selectedAction == add)
|
||||
if(selectedAction == menuActions[0])
|
||||
{
|
||||
int row=this->rowCount();
|
||||
this->insertRow(this->rowCount());
|
||||
emit rowAdded(row);
|
||||
}
|
||||
else if(selectedAction == insert)
|
||||
else if(selectedAction == menuActions[1])
|
||||
{
|
||||
int row=this->currentRow();
|
||||
this->insertRow(this->currentRow());
|
||||
emit rowAdded(row);
|
||||
}
|
||||
else if( selectedAction == clone )
|
||||
else if( selectedAction == menuActions[2] )
|
||||
{
|
||||
this->setSortingEnabled(false);
|
||||
int row=this->currentRow(); // This will be the new row with the old one as row+1
|
||||
|
@ -50,11 +51,14 @@ void tableWidget::mouseReleaseEvent(QMouseEvent *event)
|
|||
emit rowAdded(row);
|
||||
this->setSortingEnabled(true);
|
||||
}
|
||||
else if( selectedAction == del )
|
||||
else if( selectedAction == menuActions[3] )
|
||||
{
|
||||
emit rowDeleted(this->currentRow());
|
||||
emit rowValDeleted((this->item(this->currentRow(),1) == NULL) ? 0 : this->item(this->currentRow(),1)->text().toUInt());
|
||||
this->removeRow(this->currentRow());
|
||||
} else
|
||||
{
|
||||
emit menuAction(selectedAction,this->currentRow());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -23,15 +23,18 @@ class tableWidget : public QTableWidget
|
|||
public:
|
||||
explicit tableWidget(QWidget* parent = 0);
|
||||
void editing(bool val) { editingEnabled = val; };
|
||||
void addAction(QAction* action) { menuActions.append(action); }
|
||||
|
||||
signals:
|
||||
void rowAdded(int row);
|
||||
void rowDeleted(int num);
|
||||
void rowValDeleted(quint32 num);
|
||||
void menuAction(QAction* action, quint32 num);
|
||||
|
||||
protected:
|
||||
void mouseReleaseEvent(QMouseEvent *event);
|
||||
bool editingEnabled = true;
|
||||
QList<QAction*> menuActions;
|
||||
};
|
||||
|
||||
|
||||
|
|
Ładowanie…
Reference in New Issue