diff --git a/plugins/feature/vorlocalizer/vorlocalizer.cpp b/plugins/feature/vorlocalizer/vorlocalizer.cpp index 452e1f9f0..6b879d970 100644 --- a/plugins/feature/vorlocalizer/vorlocalizer.cpp +++ b/plugins/feature/vorlocalizer/vorlocalizer.cpp @@ -127,7 +127,7 @@ void VORLocalizer::start() m_state = StRunning; m_thread->start(); - VorLocalizerWorker::MsgConfigureVORLocalizerWorker *msg = VorLocalizerWorker::MsgConfigureVORLocalizerWorker::create(m_settings, true); + VorLocalizerWorker::MsgConfigureVORLocalizerWorker *msg = VorLocalizerWorker::MsgConfigureVORLocalizerWorker::create(m_settings, QList(), true); m_worker->getInputMessageQueue()->push(msg); m_running = true; @@ -155,7 +155,7 @@ bool VORLocalizer::handleMessage(const Message& cmd) { MsgConfigureVORLocalizer& cfg = (MsgConfigureVORLocalizer&) cmd; qDebug() << "VORLocalizer::handleMessage: MsgConfigureVORLocalizer"; - applySettings(cfg.getSettings(), cfg.getForce()); + applySettings(cfg.getSettings(), cfg.getSettingsKeys(), cfg.getForce()); return true; } @@ -323,66 +323,39 @@ bool VORLocalizer::deserialize(const QByteArray& data) { if (m_settings.deserialize(data)) { - MsgConfigureVORLocalizer *msg = MsgConfigureVORLocalizer::create(m_settings, true); + MsgConfigureVORLocalizer *msg = MsgConfigureVORLocalizer::create(m_settings, QList(), true); m_inputMessageQueue.push(msg); return true; } else { m_settings.resetToDefaults(); - MsgConfigureVORLocalizer *msg = MsgConfigureVORLocalizer::create(m_settings, true); + MsgConfigureVORLocalizer *msg = MsgConfigureVORLocalizer::create(m_settings, QList(), true); m_inputMessageQueue.push(msg); return false; } } -void VORLocalizer::applySettings(const VORLocalizerSettings& settings, bool force) +void VORLocalizer::applySettings(const VORLocalizerSettings& settings, const QList& settingsKeys, bool force) { - qDebug() << "VORLocalizer::applySettings:" - << " m_title: " << settings.m_title - << " m_rgbColor: " << settings.m_rgbColor - << " m_magDecAdjust: " << settings.m_magDecAdjust - << " m_rrTime: " << settings.m_rrTime - << " m_centerShift: " << settings.m_centerShift - << " force: " << force; - - QList reverseAPIKeys; - - if ((m_settings.m_title != settings.m_title) || force) { - reverseAPIKeys.append("title"); - } - if ((m_settings.m_rgbColor != settings.m_rgbColor) || force) { - reverseAPIKeys.append("rgbColor"); - } - if ((m_settings.m_magDecAdjust != settings.m_magDecAdjust) || force) { - reverseAPIKeys.append("magDecAdjust"); - } - if ((m_settings.m_rrTime != settings.m_rrTime) || force) { - reverseAPIKeys.append("rrTime"); - } - if ((m_settings.m_forceRRAveraging != settings.m_forceRRAveraging) || force) { - reverseAPIKeys.append("forceRRAveraging"); - } - if ((m_settings.m_centerShift != settings.m_centerShift) || force) { - reverseAPIKeys.append("centerShift"); - } + qDebug() << "VORLocalizer::applySettings:" << settings.getDebugString(settingsKeys, force) << " force: " << force; if (m_running) { VorLocalizerWorker::MsgConfigureVORLocalizerWorker *msg = VorLocalizerWorker::MsgConfigureVORLocalizerWorker::create( - settings, force + settings, settingsKeys, force ); m_worker->getInputMessageQueue()->push(msg); } - if (settings.m_useReverseAPI) + if (settingsKeys.contains("useReverseAPI")) { - bool fullUpdate = ((m_settings.m_useReverseAPI != settings.m_useReverseAPI) && settings.m_useReverseAPI) || - (m_settings.m_reverseAPIAddress != settings.m_reverseAPIAddress) || - (m_settings.m_reverseAPIPort != settings.m_reverseAPIPort) || - (m_settings.m_reverseAPIFeatureSetIndex != settings.m_reverseAPIFeatureSetIndex) || - (m_settings.m_reverseAPIFeatureIndex != settings.m_reverseAPIFeatureIndex); - webapiReverseSendSettings(reverseAPIKeys, settings, fullUpdate || force); + bool fullUpdate = (settingsKeys.contains("useReverseAPI") && settings.m_useReverseAPI) || + settingsKeys.contains("reverseAPIAddress") || + settingsKeys.contains("reverseAPIPort") || + settingsKeys.contains("reverseAPIFeatureSetIndex") || + settingsKeys.contains("m_reverseAPIFeatureIndex"); + webapiReverseSendSettings(settingsKeys, settings, fullUpdate || force); } m_settings = settings; @@ -468,13 +441,13 @@ int VORLocalizer::webapiSettingsPutPatch( VORLocalizerSettings settings = m_settings; webapiUpdateFeatureSettings(settings, featureSettingsKeys, response); - MsgConfigureVORLocalizer *msg = MsgConfigureVORLocalizer::create(settings, force); + MsgConfigureVORLocalizer *msg = MsgConfigureVORLocalizer::create(settings, featureSettingsKeys, force); m_inputMessageQueue.push(msg); qDebug("VORLocalizer::webapiSettingsPutPatch: forward to GUI: %p", m_guiMessageQueue); if (m_guiMessageQueue) // forward to GUI if any { - MsgConfigureVORLocalizer *msgToGUI = MsgConfigureVORLocalizer::create(settings, force); + MsgConfigureVORLocalizer *msgToGUI = MsgConfigureVORLocalizer::create(settings, featureSettingsKeys, force); m_guiMessageQueue->push(msgToGUI); } @@ -569,6 +542,26 @@ void VORLocalizer::webapiFormatFeatureSettings( response.getVorLocalizerSettings()->setRollupState(swgRollupState); } } + + if (!response.getVorLocalizerSettings()->getColumnIndexes()) { + response.getVorLocalizerSettings()->setColumnIndexes(new QList()); + } + + response.getVorLocalizerSettings()->getColumnIndexes()->clear(); + + for (int i = 0; i < VORLocalizerSettings::VORDEMOD_COLUMNS; i++) { + response.getVorLocalizerSettings()->getColumnIndexes()->push_back(settings.m_columnIndexes[i]); + } + + if (!response.getVorLocalizerSettings()->getColumnSizes()) { + response.getVorLocalizerSettings()->setColumnSizes(new QList()); + } + + response.getVorLocalizerSettings()->getColumnSizes()->clear(); + + for (int i = 0; i < VORLocalizerSettings::VORDEMOD_COLUMNS; i++) { + response.getVorLocalizerSettings()->getColumnSizes()->push_back(settings.m_columnSizes[i]); + } } void VORLocalizer::webapiUpdateFeatureSettings( @@ -612,9 +605,27 @@ void VORLocalizer::webapiUpdateFeatureSettings( if (settings.m_rollupState && featureSettingsKeys.contains("rollupState")) { settings.m_rollupState->updateFrom(featureSettingsKeys, response.getVorLocalizerSettings()->getRollupState()); } + + if (featureSettingsKeys.contains("columnIndexes")) + { + const QList *indexes = response.getVorLocalizerSettings()->getColumnIndexes(); + + for (int i = 0; i < VORLocalizerSettings::VORDEMOD_COLUMNS; i++) { + settings.m_columnIndexes[i] = (*indexes)[i]; + } + } + + if (featureSettingsKeys.contains("columnSizes")) + { + const QList *indexes = response.getVorLocalizerSettings()->getColumnSizes(); + + for (int i = 0; i < VORLocalizerSettings::VORDEMOD_COLUMNS; i++) { + settings.m_columnSizes[i] = (*indexes)[i]; + } + } } -void VORLocalizer::webapiReverseSendSettings(QList& channelSettingsKeys, const VORLocalizerSettings& settings, bool force) +void VORLocalizer::webapiReverseSendSettings(const QList& channelSettingsKeys, const VORLocalizerSettings& settings, bool force) { SWGSDRangel::SWGFeatureSettings *swgFeatureSettings = new SWGSDRangel::SWGFeatureSettings(); // swgFeatureSettings->setOriginatorFeatureIndex(getIndexInDeviceSet()); diff --git a/plugins/feature/vorlocalizer/vorlocalizer.h b/plugins/feature/vorlocalizer/vorlocalizer.h index c0a6b2bfb..3af04d154 100644 --- a/plugins/feature/vorlocalizer/vorlocalizer.h +++ b/plugins/feature/vorlocalizer/vorlocalizer.h @@ -46,19 +46,22 @@ public: public: const VORLocalizerSettings& getSettings() const { return m_settings; } + const QList& getSettingsKeys() const { return m_settingsKeys; } bool getForce() const { return m_force; } - static MsgConfigureVORLocalizer* create(const VORLocalizerSettings& settings, bool force) { - return new MsgConfigureVORLocalizer(settings, force); + static MsgConfigureVORLocalizer* create(const VORLocalizerSettings& settings, const QList& settingsKeys, bool force) { + return new MsgConfigureVORLocalizer(settings, settingsKeys, force); } private: VORLocalizerSettings m_settings; + QList m_settingsKeys; bool m_force; - MsgConfigureVORLocalizer(const VORLocalizerSettings& settings, bool force) : + MsgConfigureVORLocalizer(const VORLocalizerSettings& settings, const QList& settingsKeys, bool force) : Message(), m_settings(settings), + m_settingsKeys(settingsKeys), m_force(force) { } }; @@ -214,10 +217,10 @@ private: void start(); void stop(); - void applySettings(const VORLocalizerSettings& settings, bool force = false); + void applySettings(const VORLocalizerSettings& settings, const QList& settingsKeys, bool force = false); void updateChannels(); void notifyUpdateChannels(); - void webapiReverseSendSettings(QList& featureSettingsKeys, const VORLocalizerSettings& settings, bool force); + void webapiReverseSendSettings(const QList& featureSettingsKeys, const VORLocalizerSettings& settings, bool force); void webapiFormatFeatureReport(SWGSDRangel::SWGFeatureReport& response); private slots: diff --git a/plugins/feature/vorlocalizer/vorlocalizergui.cpp b/plugins/feature/vorlocalizer/vorlocalizergui.cpp index 84b288206..f83ec408f 100644 --- a/plugins/feature/vorlocalizer/vorlocalizergui.cpp +++ b/plugins/feature/vorlocalizer/vorlocalizergui.cpp @@ -375,6 +375,8 @@ void VORLocalizerGUI::vorData_sectionMoved(int logicalIndex, int oldVisualIndex, { (void) oldVisualIndex; m_settings.m_columnIndexes[logicalIndex] = newVisualIndex; + m_settingsKeys.append("columnIndexes"); + applySettings(); } // Column in table resized (when hidden size is 0) @@ -382,6 +384,8 @@ void VORLocalizerGUI::vorData_sectionResized(int logicalIndex, int oldSize, int { (void) oldSize; m_settings.m_columnSizes[logicalIndex] = newSize; + m_settingsKeys.append("columnSizes"); + applySettings(); } // Right click in table header - show column select menu @@ -534,7 +538,13 @@ bool VORLocalizerGUI::handleMessage(const Message& message) { qDebug("VORLocalizerGUI::handleMessage: VORLocalizer::MsgConfigureVORLocalizer"); const VORLocalizer::MsgConfigureVORLocalizer& cfg = (VORLocalizer::MsgConfigureVORLocalizer&) message; - m_settings = cfg.getSettings(); + + if (cfg.getForce()) { + m_settings = cfg.getSettings(); + } else { + m_settings.applySettings(cfg.getSettingsKeys(), cfg.getSettings()); + } + blockApplySettings(true); displaySettings(); blockApplySettings(false); @@ -598,8 +608,8 @@ bool VORLocalizerGUI::handleMessage(const Message& message) { VORLocalizerReport::MsgReportIdent& report = (VORLocalizerReport::MsgReportIdent&) message; int subChannelId = report.getSubChannelId(); - VORGUI *vorGUI = m_selectedVORs.value(subChannelId); + if (vorGUI) { @@ -608,6 +618,7 @@ bool VORLocalizerGUI::handleMessage(const Message& message) QString identString = Morse::toString(ident); // Idents should only be two or three characters, so filter anything else // other than TEST which indicates a VOR is under maintainance (may also be TST) + if (((identString.size() >= 2) && (identString.size() <= 3)) || (identString == "TEST")) { vorGUI->m_rxIdentItem->setText(identString); @@ -741,6 +752,7 @@ void VORLocalizerGUI::downloadingURL(const QString& url) void VORLocalizerGUI::downloadError(const QString& error) { QMessageBox::critical(this, "VOR Localizer", error); + if (m_progressDialog) { m_progressDialog->close(); @@ -754,7 +766,9 @@ void VORLocalizerGUI::downloadNavAidsFinished() if (m_progressDialog) { m_progressDialog->setLabelText("Reading NAVAIDs."); } + readNavAids(); + if (m_progressDialog) { m_progressDialog->close(); @@ -767,6 +781,7 @@ void VORLocalizerGUI::on_magDecAdjust_toggled(bool checked) { m_settings.m_magDecAdjust = checked; m_vorModel.allVORUpdated(); + m_settingsKeys.append("magDecAdjust"); applySettings(); } @@ -774,6 +789,7 @@ void VORLocalizerGUI::on_rrTime_valueChanged(int value) { m_settings.m_rrTime = value; ui->rrTimeText->setText(tr("%1s").arg(m_settings.m_rrTime)); + m_settingsKeys.append("rrTime"); applySettings(); } @@ -781,6 +797,7 @@ void VORLocalizerGUI::on_centerShift_valueChanged(int value) { m_settings.m_centerShift = value * 1000; ui->centerShiftText->setText(tr("%1k").arg(value)); + m_settingsKeys.append("centerShift"); applySettings(); } @@ -799,9 +816,7 @@ void VORLocalizerGUI::onWidgetRolled(QWidget* widget, bool rollDown) (void) rollDown; RollupContents *rollupContents = getRollupContents(); - rollupContents->saveState(m_rollupState); - applySettings(); } void VORLocalizerGUI::onMenuDialogCalled(const QPoint &p) @@ -830,6 +845,14 @@ void VORLocalizerGUI::onMenuDialogCalled(const QPoint &p) setTitle(m_settings.m_title); setTitleColor(m_settings.m_rgbColor); + m_settingsKeys.append("title"); + m_settingsKeys.append("rgbColor"); + m_settingsKeys.append("useReverseAPI"); + m_settingsKeys.append("reverseAPIAddress"); + m_settingsKeys.append("reverseAPIPort"); + m_settingsKeys.append("reverseAPIFeatureSetIndex"); + m_settingsKeys.append("reverseAPIFeatureIndex"); + applySettings(); } @@ -849,6 +872,7 @@ void VORLocalizerGUI::applyMapSettings() QObject *object = item->findChild("map"); QGeoCoordinate coords; double zoom; + if (object != nullptr) { // Save existing position of map @@ -876,14 +900,21 @@ void VORLocalizerGUI::applyMapSettings() } QVariant retVal; - if (!QMetaObject::invokeMethod(item, "createMap", Qt::DirectConnection, - Q_RETURN_ARG(QVariant, retVal), - Q_ARG(QVariant, QVariant::fromValue(parameters)), - Q_ARG(QVariant, mapType), - Q_ARG(QVariant, QVariant::fromValue(this)))) + + if (!QMetaObject::invokeMethod( + item, + "createMap", + Qt::DirectConnection, + Q_RETURN_ARG(QVariant, retVal), + Q_ARG(QVariant, QVariant::fromValue(parameters)), + Q_ARG(QVariant, mapType), + Q_ARG(QVariant, QVariant::fromValue(this)) + ) + ) { qCritical() << "VORLocalizerGUI::applyMapSettings - Failed to invoke createMap"; } + QObject *newMap = retVal.value(); // Restore position of map @@ -902,6 +933,7 @@ void VORLocalizerGUI::applyMapSettings() // Move antenna icon to My Position QObject *stationObject = newMap->findChild("station"); + if(stationObject != NULL) { QGeoCoordinate coords = stationObject->property("coordinate").value(); @@ -1035,9 +1067,11 @@ void VORLocalizerGUI::applySettings(bool force) { if (m_doApplySettings) { - VORLocalizer::MsgConfigureVORLocalizer* message = VORLocalizer::MsgConfigureVORLocalizer::create( m_settings, force); + VORLocalizer::MsgConfigureVORLocalizer* message = VORLocalizer::MsgConfigureVORLocalizer::create( m_settings, m_settingsKeys, force); m_vorLocalizer->getInputMessageQueue()->push(message); } + + m_settingsKeys.clear(); } void VORLocalizerGUI::displaySettings() @@ -1116,7 +1150,7 @@ void VORLocalizerGUI::tick() QQuickItem *item = ui->map->rootObject(); QObject *stationObject = item->findChild("station"); - if(stationObject != NULL) + if (stationObject != NULL) { QGeoCoordinate coords = stationObject->property("coordinate").value(); coords.setLatitude(lat); @@ -1155,9 +1189,11 @@ void VORLocalizerGUI::preferenceChanged(int elementType) // Update icon position on Map QQuickItem *item = ui->map->rootObject(); QObject *map = item->findChild("map"); + if (map != nullptr) { QObject *stationObject = map->findChild("station"); + if(stationObject != NULL) { QGeoCoordinate coords = stationObject->property("coordinate").value(); @@ -1169,14 +1205,17 @@ void VORLocalizerGUI::preferenceChanged(int elementType) } } } + if (pref == Preferences::StationName) { // Update icon label on Map QQuickItem *item = ui->map->rootObject(); QObject *map = item->findChild("map"); + if (map != nullptr) { QObject *stationObject = map->findChild("station"); + if(stationObject != NULL) { stationObject->setProperty("stationName", QVariant::fromValue(MainCore::instance()->getSettings().getStationName())); } @@ -1189,9 +1228,11 @@ void VORLocalizerGUI::redrawMap() // An awful workaround for https://bugreports.qt.io/browse/QTBUG-100333 // Also used in ADS-B demod QQuickItem *item = ui->map->rootObject(); + if (item) { QObject *object = item->findChild("map"); + if (object) { double zoom = object->property("zoomLevel").value(); @@ -1222,11 +1263,13 @@ bool VORLocalizerGUI::eventFilter(QObject *obj, QEvent *event) QResizeEvent *resizeEvent = static_cast(event); QSize oldSize = resizeEvent->oldSize(); QSize size = resizeEvent->size(); + if (oldSize.height() != size.height()) { redrawMap(); } } } + return false; } diff --git a/plugins/feature/vorlocalizer/vorlocalizergui.h b/plugins/feature/vorlocalizer/vorlocalizergui.h index e877a9da7..26fadecc5 100644 --- a/plugins/feature/vorlocalizer/vorlocalizergui.h +++ b/plugins/feature/vorlocalizer/vorlocalizergui.h @@ -226,6 +226,7 @@ private: PluginAPI* m_pluginAPI; FeatureUISet* m_featureUISet; VORLocalizerSettings m_settings; + QList m_settingsKeys; RollupState m_rollupState; bool m_doApplySettings; diff --git a/plugins/feature/vorlocalizer/vorlocalizersettings.cpp b/plugins/feature/vorlocalizer/vorlocalizersettings.cpp index fb27423f0..1ff210593 100644 --- a/plugins/feature/vorlocalizer/vorlocalizersettings.cpp +++ b/plugins/feature/vorlocalizer/vorlocalizersettings.cpp @@ -168,3 +168,119 @@ bool VORLocalizerSettings::VORChannel::operator<(const VORChannel& other) const return false; } + +void VORLocalizerSettings::applySettings(const QStringList& settingsKeys, const VORLocalizerSettings& settings) +{ + if (settingsKeys.contains("rgbColor")) { + m_rgbColor = settings.m_rgbColor; + } + if (settingsKeys.contains("title")) { + m_title = settings.m_title; + } + if (settingsKeys.contains("magDecAdjust")) { + m_magDecAdjust = settings.m_magDecAdjust; + } + if (settingsKeys.contains("rrTime")) { + m_rrTime = settings.m_rrTime; + } + if (settingsKeys.contains("centerShift")) { + m_centerShift = settings.m_centerShift; + } + if (settingsKeys.contains("useReverseAPI")) { + m_useReverseAPI = settings.m_useReverseAPI; + } + if (settingsKeys.contains("reverseAPIAddress")) { + m_reverseAPIAddress = settings.m_reverseAPIAddress; + } + if (settingsKeys.contains("reverseAPIPort")) { + m_reverseAPIPort = settings.m_reverseAPIPort; + } + if (settingsKeys.contains("reverseAPIFeatureSetIndex")) { + m_reverseAPIFeatureSetIndex = settings.m_reverseAPIFeatureSetIndex; + } + if (settingsKeys.contains("reverseAPIFeatureIndex")) { + m_reverseAPIFeatureIndex = settings.m_reverseAPIFeatureIndex; + } + if (settingsKeys.contains("workspaceIndex")) { + m_workspaceIndex = settings.m_workspaceIndex; + } + if (settingsKeys.contains("mapProvider")) { + m_mapProvider = settings.m_mapProvider; + } + + if (settingsKeys.contains("columnIndexes")) + { + for (int i = 0; i < VORDEMOD_COLUMNS; i++) { + m_columnIndexes[i] = settings.m_columnIndexes[i]; + } + } + + if (settingsKeys.contains("columnSizes")) + { + for (int i = 0; i < VORDEMOD_COLUMNS; i++) { + m_columnSizes[i] = settings.m_columnSizes[i]; + } + } +} + +QString VORLocalizerSettings::getDebugString(const QStringList& settingsKeys, bool force) const +{ + std::ostringstream ostr; + + if (settingsKeys.contains("rgbColor") || force) { + ostr << " m_rgbColor: " << m_rgbColor; + } + if (settingsKeys.contains("title") || force) { + ostr << " m_title: " << m_title.toStdString(); + } + if (settingsKeys.contains("magDecAdjust") || force) { + ostr << " m_magDecAdjust: " << m_magDecAdjust; + } + if (settingsKeys.contains("rrTime") || force) { + ostr << " m_rrTime: " << m_rrTime; + } + if (settingsKeys.contains("centerShift") || force) { + ostr << " m_centerShift: " << m_centerShift; + } + if (settingsKeys.contains("useReverseAPI") || force) { + ostr << " m_useReverseAPI: " << m_useReverseAPI; + } + if (settingsKeys.contains("reverseAPIAddress") || force) { + ostr << " m_reverseAPIAddress: " << m_reverseAPIAddress.toStdString(); + } + if (settingsKeys.contains("reverseAPIPort") || force) { + ostr << " m_reverseAPIPort: " << m_reverseAPIPort; + } + if (settingsKeys.contains("reverseAPIFeatureSetIndex") || force) { + ostr << " m_reverseAPIFeatureSetIndex: " << m_reverseAPIFeatureSetIndex; + } + if (settingsKeys.contains("reverseAPIFeatureIndex") || force) { + ostr << " m_reverseAPIFeatureIndex: " << m_reverseAPIFeatureIndex; + } + if (settingsKeys.contains("workspaceIndex") || force) { + ostr << " m_workspaceIndex: " << m_workspaceIndex; + } + if (settingsKeys.contains("mapProvider") || force) { + ostr << " m_mapProvider: " << m_mapProvider.toStdString(); + } + + if (settingsKeys.contains("columnIndexes")) + { + ostr << "m_columnIndexes:"; + + for (int i = 0; i < VORDEMOD_COLUMNS; i++) { + ostr << " " << m_columnIndexes[i]; + } + } + + if (settingsKeys.contains("columnSizes")) + { + ostr << "m_columnSizes:"; + + for (int i = 0; i < VORDEMOD_COLUMNS; i++) { + ostr << " " << m_columnSizes[i]; + } + } + + return QString(ostr.str().c_str()); +} diff --git a/plugins/feature/vorlocalizer/vorlocalizersettings.h b/plugins/feature/vorlocalizer/vorlocalizersettings.h index 359d9c9db..5ad4189d2 100644 --- a/plugins/feature/vorlocalizer/vorlocalizersettings.h +++ b/plugins/feature/vorlocalizer/vorlocalizersettings.h @@ -100,6 +100,8 @@ struct VORLocalizerSettings QByteArray serialize() const; bool deserialize(const QByteArray& data); void setRollupState(Serializable *rollupState) { m_rollupState = rollupState; } + void applySettings(const QStringList& settingsKeys, const VORLocalizerSettings& settings); + QString getDebugString(const QStringList& settingsKeys, bool force=false) const; }; #endif /* INCLUDE_VORLOCALIZERSETTINGS_H */ diff --git a/plugins/feature/vorlocalizer/vorlocalizerworker.cpp b/plugins/feature/vorlocalizer/vorlocalizerworker.cpp index 4e258ab5a..b4eca4482 100644 --- a/plugins/feature/vorlocalizer/vorlocalizerworker.cpp +++ b/plugins/feature/vorlocalizer/vorlocalizerworker.cpp @@ -112,7 +112,7 @@ bool VorLocalizerWorker::handleMessage(const Message& cmd) MsgConfigureVORLocalizerWorker& cfg = (MsgConfigureVORLocalizerWorker&) cmd; qDebug() << "VorLocalizerWorker::handleMessage: MsgConfigureVORLocalizerWorker"; - applySettings(cfg.getSettings(), cfg.getForce()); + applySettings(cfg.getSettings(), cfg.getSettingsKeys(), cfg.getForce()); return true; } @@ -129,12 +129,9 @@ bool VorLocalizerWorker::handleMessage(const Message& cmd) } } -void VorLocalizerWorker::applySettings(const VORLocalizerSettings& settings, bool force) +void VorLocalizerWorker::applySettings(const VORLocalizerSettings& settings, const QList& settingsKeys, bool force) { - qDebug() << "VorLocalizerWorker::applySettings:" - << " m_title: " << settings.m_title - << " m_rgbColor: " << settings.m_rgbColor - << " force: " << force; + qDebug() << "VorLocalizerWorker::applySettings:" << settings.getDebugString(settingsKeys, force) << " force: " << force; // Remove sub-channels no longer needed for (int i = 0; i < m_vorChannels.size(); i++) @@ -190,11 +187,15 @@ void VorLocalizerWorker::applySettings(const VORLocalizerSettings& settings, boo } } - if ((settings.m_rrTime != m_settings.m_rrTime) || force) { + if (settingsKeys.contains("rrTime") || force) { m_rrTimer.start(settings.m_rrTime * 1000); } - m_settings = settings; + if (force) { + m_settings = settings; + } else { + m_settings.applySettings(settingsKeys, settings); + } } void VorLocalizerWorker::updateHardware() diff --git a/plugins/feature/vorlocalizer/vorlocalizerworker.h b/plugins/feature/vorlocalizer/vorlocalizerworker.h index ae7cbebbc..f8af4b7d0 100644 --- a/plugins/feature/vorlocalizer/vorlocalizerworker.h +++ b/plugins/feature/vorlocalizer/vorlocalizerworker.h @@ -39,20 +39,23 @@ public: public: const VORLocalizerSettings& getSettings() const { return m_settings; } + const QList& getSettingsKeys() const { return m_settingsKeys; } bool getForce() const { return m_force; } - static MsgConfigureVORLocalizerWorker* create(const VORLocalizerSettings& settings, bool force) + static MsgConfigureVORLocalizerWorker* create(const VORLocalizerSettings& settings, const QList& settingsKeys, bool force) { - return new MsgConfigureVORLocalizerWorker(settings, force); + return new MsgConfigureVORLocalizerWorker(settings, settingsKeys, force); } private: VORLocalizerSettings m_settings; + QList m_settingsKeys; bool m_force; - MsgConfigureVORLocalizerWorker(const VORLocalizerSettings& settings, bool force) : + MsgConfigureVORLocalizerWorker(const VORLocalizerSettings& settings, const QList& settingsKeys, bool force) : Message(), m_settings(settings), + m_settingsKeys(settingsKeys), m_force(force) { } }; @@ -152,7 +155,7 @@ private: std::vector m_rrTurnCounters; //!< Round robin turn count for each device bool handleMessage(const Message& cmd); - void applySettings(const VORLocalizerSettings& settings, bool force = false); + void applySettings(const VORLocalizerSettings& settings, const QList& settingsKeys, bool force = false); void removeVORChannel(int navId); void addVORChannel(const VORLocalizerSubChannelSettings& subChannelSettings); void updateChannels(); //!< (re)allocate channels to service VORs diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index 84e49b9a3..f39ceafb6 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -14691,6 +14691,18 @@ margin-bottom: 20px; }, "rollupState" : { "$ref" : "#/definitions/RollupState" + }, + "columnIndexes" : { + "type" : "array", + "items" : { + "type" : "integer" + } + }, + "columnSizes" : { + "type" : "array", + "items" : { + "type" : "integer" + } } }, "description" : "VORLocalizer" @@ -56725,7 +56737,7 @@ except ApiException as e:
- Generated 2022-11-27T10:57:52.904+01:00 + Generated 2022-11-30T21:42:22.227+01:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/VORLocalizer.yaml b/sdrbase/resources/webapi/doc/swagger/include/VORLocalizer.yaml index 7457636d6..7ad440364 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/VORLocalizer.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/VORLocalizer.yaml @@ -33,6 +33,14 @@ VORLocalizerSettings: type: integer rollupState: $ref: "/doc/swagger/include/RollupState.yaml#/RollupState" + columnIndexes: + type: array + items: + type: integer + columnSizes: + type: array + items: + type: integer VORLocalizerReport: description: VORLocalizers diff --git a/swagger/sdrangel/api/swagger/include/VORLocalizer.yaml b/swagger/sdrangel/api/swagger/include/VORLocalizer.yaml index 01f79a480..99940c54d 100644 --- a/swagger/sdrangel/api/swagger/include/VORLocalizer.yaml +++ b/swagger/sdrangel/api/swagger/include/VORLocalizer.yaml @@ -33,6 +33,14 @@ VORLocalizerSettings: type: integer rollupState: $ref: "http://swgserver:8081/api/swagger/include/RollupState.yaml#/RollupState" + columnIndexes: + type: array + items: + type: integer + columnSizes: + type: array + items: + type: integer VORLocalizerReport: description: VORLocalizers diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 84e49b9a3..f39ceafb6 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -14691,6 +14691,18 @@ margin-bottom: 20px; }, "rollupState" : { "$ref" : "#/definitions/RollupState" + }, + "columnIndexes" : { + "type" : "array", + "items" : { + "type" : "integer" + } + }, + "columnSizes" : { + "type" : "array", + "items" : { + "type" : "integer" + } } }, "description" : "VORLocalizer" @@ -56725,7 +56737,7 @@ except ApiException as e:
- Generated 2022-11-27T10:57:52.904+01:00 + Generated 2022-11-30T21:42:22.227+01:00
diff --git a/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.cpp b/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.cpp index 5bc68e050..7fe3ca094 100644 --- a/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.cpp +++ b/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.cpp @@ -52,6 +52,10 @@ SWGVORLocalizerSettings::SWGVORLocalizerSettings() { m_center_shift_isSet = false; rollup_state = nullptr; m_rollup_state_isSet = false; + column_indexes = new QList(); + m_column_indexes_isSet = false; + column_sizes = new QList(); + m_column_sizes_isSet = false; } SWGVORLocalizerSettings::~SWGVORLocalizerSettings() { @@ -84,6 +88,10 @@ SWGVORLocalizerSettings::init() { m_center_shift_isSet = false; rollup_state = new SWGRollupState(); m_rollup_state_isSet = false; + column_indexes = new QList(); + m_column_indexes_isSet = false; + column_sizes = new QList(); + m_column_sizes_isSet = false; } void @@ -106,6 +114,8 @@ SWGVORLocalizerSettings::cleanup() { if(rollup_state != nullptr) { delete rollup_state; } + + } SWGVORLocalizerSettings* @@ -143,6 +153,10 @@ SWGVORLocalizerSettings::fromJsonObject(QJsonObject &pJson) { ::SWGSDRangel::setValue(&rollup_state, pJson["rollupState"], "SWGRollupState", "SWGRollupState"); + + ::SWGSDRangel::setValue(&column_indexes, pJson["columnIndexes"], "QList", "qint32"); + + ::SWGSDRangel::setValue(&column_sizes, pJson["columnSizes"], "QList", "qint32"); } QString @@ -195,6 +209,12 @@ SWGVORLocalizerSettings::asJsonObject() { if((rollup_state != nullptr) && (rollup_state->isSet())){ toJsonValue(QString("rollupState"), rollup_state, obj, QString("SWGRollupState")); } + if(column_indexes && column_indexes->size() > 0){ + toJsonArray((QList*)column_indexes, obj, "columnIndexes", ""); + } + if(column_sizes && column_sizes->size() > 0){ + toJsonArray((QList*)column_sizes, obj, "columnSizes", ""); + } return obj; } @@ -319,6 +339,26 @@ SWGVORLocalizerSettings::setRollupState(SWGRollupState* rollup_state) { this->m_rollup_state_isSet = true; } +QList* +SWGVORLocalizerSettings::getColumnIndexes() { + return column_indexes; +} +void +SWGVORLocalizerSettings::setColumnIndexes(QList* column_indexes) { + this->column_indexes = column_indexes; + this->m_column_indexes_isSet = true; +} + +QList* +SWGVORLocalizerSettings::getColumnSizes() { + return column_sizes; +} +void +SWGVORLocalizerSettings::setColumnSizes(QList* column_sizes) { + this->column_sizes = column_sizes; + this->m_column_sizes_isSet = true; +} + bool SWGVORLocalizerSettings::isSet(){ @@ -360,6 +400,18 @@ SWGVORLocalizerSettings::isSet(){ if(rollup_state && rollup_state->isSet()){ isObjectUpdated = true; break; } + if(m_column_indexes_isSet){ + isObjectUpdated = true; break; + } + if(column_indexes && (column_indexes->size() > 0)){ + isObjectUpdated = true; break; + } + if(m_column_sizes_isSet){ + isObjectUpdated = true; break; + } + if(column_sizes && (column_sizes->size() > 0)){ + isObjectUpdated = true; break; + } }while(false); return isObjectUpdated; } diff --git a/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.h b/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.h index 8edb136c5..fd9152c72 100644 --- a/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.h +++ b/swagger/sdrangel/code/qt5/client/SWGVORLocalizerSettings.h @@ -23,6 +23,7 @@ #include "SWGRollupState.h" +#include #include #include "SWGObject.h" @@ -79,6 +80,12 @@ public: SWGRollupState* getRollupState(); void setRollupState(SWGRollupState* rollup_state); + QList* getColumnIndexes(); + void setColumnIndexes(QList* column_indexes); + + QList* getColumnSizes(); + void setColumnSizes(QList* column_sizes); + virtual bool isSet() override; @@ -119,6 +126,12 @@ private: SWGRollupState* rollup_state; bool m_rollup_state_isSet; + QList* column_indexes; + bool m_column_indexes_isSet; + + QList* column_sizes; + bool m_column_sizes_isSet; + }; }