diff --git a/resources/install.sh b/resources/install.sh index 7c92fe9..3a9f460 100644 --- a/resources/install.sh +++ b/resources/install.sh @@ -33,7 +33,7 @@ cp wfview.desktop /usr/share/applications/ cp wfview.png /usr/share/pixmaps/ mkdir -p /usr/share/wfview/stylesheets cp -r qdarkstyle /usr/share/wfview/stylesheets/ - +cp -r rigs /usr/share/wfview/ echo "" echo "Done!" diff --git a/rigcommander.cpp b/rigcommander.cpp index b11fc1d..b25c39a 100644 --- a/rigcommander.cpp +++ b/rigcommander.cpp @@ -539,7 +539,7 @@ void rigCommander::setScopeSpan(char span) { double freq = double(s.freq/1000000.0); payload.append(makeFreqPayload(freq)); - //qDebug(logRig()) << "Set Span for" << freq << "MHz" << "cmd:" << payload.toHex(); + //qDebug(logRig()) << "Set Span for" << freq << "MHz" << "cmd:"; prepDataAndSend(payload); break; } @@ -1754,6 +1754,7 @@ void rigCommander::parseCommand() case funcNRLevel: emit haveNRLevel(bcdHexToUChar(payloadIn[2],payloadIn[3])); state.set(NR, bcdHexToUChar(payloadIn[2],payloadIn[3]), false); + break; case funcPBTInner: emit haveTPBFInner(bcdHexToUChar(payloadIn[2],payloadIn[3])); state.set(PBTIN, bcdHexToUChar(payloadIn[2],payloadIn[3]), false); @@ -1881,6 +1882,7 @@ void rigCommander::parseCommand() } emit haveRptAccessMode(ra); state.set(TONEFUNC, payloadIn.at(2) != 0, false); + break; } case funcRepeaterTSQL: { @@ -1892,8 +1894,8 @@ void rigCommander::parseCommand() ra = ratrTSQLoff; } emit haveRptAccessMode(ra); - break; state.set(TSQLFUNC, payloadIn.at(2) != 0, false); + break; } case funcRepeaterDTCS: case funcRepeaterCSQL: @@ -2014,7 +2016,7 @@ void rigCommander::parseCommand() break; case funcDashRatio: emit haveDashRatio(bcdHexToUChar(payloadIn[4])); - + break; // 0x1b register case funcToneFreq: emit haveTone(decodeTone(payloadIn)); @@ -3244,7 +3246,7 @@ void rigCommander::setTime(timekind t) payload.append(convertNumberToHex(t.hours)); payload.append(convertNumberToHex(t.minutes)); prepDataAndSend(payload); - qInfo(logRig()) << QString("Setting Time: %0:%1 (%3)").arg(t.hours).arg(t.minutes).arg(payload.toHex()); + qInfo(logRig()) << QString("Setting Time: %0:%1").arg(t.hours).arg(t.minutes); } /* @@ -3293,7 +3295,7 @@ void rigCommander::setDate(datekind d) payload.append(convertNumberToHex(d.month)); payload.append(convertNumberToHex(d.day)); prepDataAndSend(payload); - qInfo(logRig()) << QString("Setting Date: %0-%1-%2 (%3)").arg(d.year).arg(d.month).arg(d.day).arg(payload.toHex()); + qInfo(logRig()) << QString("Setting Date: %0-%1-%2").arg(d.year).arg(d.month).arg(d.day); } /* @@ -3337,7 +3339,7 @@ void rigCommander::setUTCOffset(timekind t) payload.append(convertNumberToHex(t.minutes)); payload.append(static_cast(t.isMinus)); prepDataAndSend(payload); - qInfo(logRig()) << QString("Setting UTC Offset: %0%1:%2 (%3)").arg((t.isMinus)?"-":"+").arg(t.hours).arg(t.minutes).arg(payload.toHex()); + qInfo(logRig()) << QString("Setting UTC Offset: %0%1:%2").arg((t.isMinus)?"-":"+").arg(t.hours).arg(t.minutes); } /* @@ -3384,7 +3386,7 @@ unsigned char rigCommander::convertNumberToHex(unsigned char num) unsigned char result = 0; result = (num/10) << 4; result |= (num - 10*(num/10)); - qDebug(logRig()) << "Converting number: " << num << " to hex: " + QString("0x%1").arg(result, 2, 16, QChar('0')); + //qDebug(logRig()) << "Converting number: " << num << " to hex: " + QString("0x%1").arg(result, 2, 16, QChar('0'); return result; } diff --git a/rigcommander.h b/rigcommander.h index 241c350..378a42b 100644 --- a/rigcommander.h +++ b/rigcommander.h @@ -26,6 +26,8 @@ //#define DEBUG_PARSE // Enable to output Info messages every 10s with command parse timing. +typedef QHash rigTypedef; + class rigCommander : public QObject { Q_OBJECT @@ -41,8 +43,8 @@ public: public slots: void process(); - void commSetup(QHash rigList, unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate, QString vsp, quint16 tcp, quint8 wf); - void commSetup(QHash rigList, unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp, quint16 tcp); + void commSetup(rigTypedef rigList, unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate, QString vsp, quint16 tcp, quint8 wf); + void commSetup(rigTypedef rigList, unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp, quint16 tcp); void closeComm(); void stateUpdated(); void setRTSforPTT(bool enabled); diff --git a/rigcreator.cpp b/rigcreator.cpp index 756f92f..af3763f 100644 --- a/rigcreator.cpp +++ b/rigcreator.cpp @@ -1,3 +1,6 @@ +#include +#include "logcategories.h" + #include "rigcreator.h" #include "ui_rigcreator.h" @@ -24,29 +27,26 @@ rigCreator::~rigCreator() void rigCreator::on_defaultRigs_clicked(bool clicked) { Q_UNUSED(clicked) - QString appdata = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); - QDir dir(appdata); - if (!dir.exists()) { - dir.mkpath(appdata); - } - if (!dir.exists("rigs")) { - dir.mkdir("rigs"); - } +#ifdef Q_OS_LINUX + QString appdata = "/usr/local/share/wfview/rigs"; + QString file = QFileDialog::getOpenFileName(this,"Select Rig Filename",appdata,"Rig Files (*.rig)",nullptr,QFileDialog::DontUseNativeDialog); +#else + QString appdata = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation)+"/rigs"; + QString file = QFileDialog::getOpenFileName(this,"Select Rig Filename",appdata,"Rig Files (*.rig)"); +#endif - QString file = QFileDialog::getOpenFileName(this,"Select Rig Filename",appdata+"/rigs","Rig Files (*.rig)"); if (!file.isEmpty()) { loadRigFile(file); } - } void rigCreator::on_loadFile_clicked(bool clicked) { Q_UNUSED(clicked) #ifdef DEVMODE - QString appdata = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); + QString appdata = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); #else QString appdata = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)+"/wfview"; #endif @@ -59,7 +59,12 @@ void rigCreator::on_loadFile_clicked(bool clicked) dir.mkdir("rigs"); } +#ifdef Q_OS_LINUX + QString file = QFileDialog::getOpenFileName(this,"Select Rig Filename",appdata+"/rigs","Rig Files (*.rig)",nullptr,QFileDialog::DontUseNativeDialog); +#else QString file = QFileDialog::getOpenFileName(this,"Select Rig Filename",appdata+"/rigs","Rig Files (*.rig)"); +#endif + if (!file.isEmpty()) { loadRigFile(file); @@ -281,7 +286,7 @@ void rigCreator::on_saveFile_clicked(bool clicked) { Q_UNUSED(clicked) #ifdef DEVMODE - QString appdata = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); + QString appdata = QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation); #else QString appdata = QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation)+"/wfview"; #endif @@ -296,7 +301,11 @@ void rigCreator::on_saveFile_clicked(bool clicked) } QFileInfo fileInfo(currentFile); +#ifdef Q_OS_LINUX + QString file = QFileDialog::getSaveFileName(this,"Select Rig Filename",appdata+"/rigs/"+fileInfo.fileName(),"Rig Files (*.rig)",nullptr,QFileDialog::DontUseNativeDialog); +#else QString file = QFileDialog::getSaveFileName(this,"Select Rig Filename",appdata+"/rigs/"+fileInfo.fileName(),"Rig Files (*.rig)"); +#endif if (!file.isEmpty()) { diff --git a/tablewidget.cpp b/tablewidget.cpp index 3e9e0fd..e122517 100644 --- a/tablewidget.cpp +++ b/tablewidget.cpp @@ -1,3 +1,5 @@ +#include +#include "logcategories.h" #include "tablewidget.h" @@ -15,7 +17,12 @@ void tableWidget::mouseReleaseEvent(QMouseEvent *event) QAction *insert= menu.addAction("Insert Item"); QAction *add= menu.addAction("Add Item"); QAction *del = menu.addAction("Delete Item"); +#if (QT_VERSION < QT_VERSION_CHECK(6,0,0)) + QAction *selectedAction = menu.exec(event->globalPos()); +#else QAction *selectedAction = menu.exec(event->globalPosition().toPoint()); +#endif + if(selectedAction == insert) { diff --git a/wfmain.cpp b/wfmain.cpp index e311c2b..7209f1e 100644 --- a/wfmain.cpp +++ b/wfmain.cpp @@ -87,11 +87,17 @@ wfmain::wfmain(const QString settingsFile, const QString logFile, bool debugMode qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); + qRegisterMetaType(); haveRigCaps = false; // We need to populate the last of rigs as early as possible so do it now +#ifdef Q_OS_LINUX + QString appdata = "/usr/local/share/wfview/rigs"; +#else QString appdata = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation)+"/rigs"; +#endif + QDir rigsDir(appdata); if (!rigsDir.exists()) { @@ -727,8 +733,8 @@ void wfmain::makeRig() connect(rig, SIGNAL(setRadioUsage(quint8, quint8, QString, QString)), selRad, SLOT(setInUse(quint8, quint8, QString, QString))); connect(selRad, SIGNAL(selectedRadio(quint8)), rig, SLOT(setCurrentRadio(quint8))); // Rig comm setup: - connect(this, SIGNAL(sendCommSetup(QHash,unsigned char, udpPreferences, audioSetup, audioSetup, QString, quint16)), rig, SLOT(commSetup(QHash,unsigned char, udpPreferences, audioSetup, audioSetup, QString, quint16))); - connect(this, SIGNAL(sendCommSetup(QHash,unsigned char, QString, quint32,QString, quint16,quint8)), rig, SLOT(commSetup(QHash,unsigned char, QString, quint32,QString, quint16,quint8))); + connect(this, SIGNAL(sendCommSetup(rigTypedef,unsigned char, udpPreferences, audioSetup, audioSetup, QString, quint16)), rig, SLOT(commSetup(rigTypedef,unsigned char, udpPreferences, audioSetup, audioSetup, QString, quint16))); + connect(this, SIGNAL(sendCommSetup(rigTypedef,unsigned char, QString, quint32,QString, quint16,quint8)), rig, SLOT(commSetup(rigTypedef,unsigned char, QString, quint32,QString, quint16,quint8))); connect(this, SIGNAL(setRTSforPTT(bool)), rig, SLOT(setRTSforPTT(bool))); connect(rig, SIGNAL(haveBaudRate(quint32)), this, SLOT(receiveBaudRate(quint32))); diff --git a/wfmain.h b/wfmain.h index 32c1264..789f48f 100644 --- a/wfmain.h +++ b/wfmain.h @@ -267,8 +267,8 @@ signals: void sayFrequency(); void sayMode(); void sayAll(); - void sendCommSetup(QHash rigList, unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate,QString vsp, quint16 tcp, quint8 wf); - void sendCommSetup(QHash rigList, unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp, quint16 tcp); + void sendCommSetup(rigTypedef rigList, unsigned char rigCivAddr, QString rigSerialPort, quint32 rigBaudRate,QString vsp, quint16 tcp, quint8 wf); + void sendCommSetup(rigTypedef rigList, unsigned char rigCivAddr, udpPreferences prefs, audioSetup rxSetup, audioSetup txSetup, QString vsp, quint16 tcp); void sendCloseComm(); void sendChangeLatency(quint16 latency); void initServer(); @@ -1265,6 +1265,7 @@ Q_DECLARE_METATYPE(struct rptrTone_t) Q_DECLARE_METATYPE(struct rptrAccessData_t) Q_DECLARE_METATYPE(enum usbFeatureType) Q_DECLARE_METATYPE(enum cmds) +Q_DECLARE_METATYPE(rigTypedef) //void (*wfmain::logthistext)(QString text) = NULL; diff --git a/wfview.pro b/wfview.pro index 5e46dd0..3245ac5 100644 --- a/wfview.pro +++ b/wfview.pro @@ -132,6 +132,10 @@ unix:stylesheets.files = qdarkstyle unix:stylesheets.path = $$PREFIX/share/wfview INSTALLS += stylesheets +unix:rigs.files = rigs/* +unix:rigs.path = $$PREFIX/share/wfview/rigs +INSTALLS += rigs + macx:LIBS += -framework CoreAudio -framework CoreFoundation -lpthread -lopus # Do not do this, it will hang on start: diff --git a/wfviewtypes.h b/wfviewtypes.h index 0a2e712..966c130 100644 --- a/wfviewtypes.h +++ b/wfviewtypes.h @@ -275,19 +275,8 @@ struct funcType { int maxVal; }; -enum argType { - argNone, - argChar, - argInt, - argByteArray, - argDouble, - -}; - struct commandtype { cmds cmd; - funcs func; - std::shared_ptr data; };