mirror of https://github.com/f4exb/sdrangel.git
VOR Loclizer feature: Make settings assignments atomic. Part of #1329
This commit is contained in:
parent
c61bc00260
commit
8ccdcb7e30
|
@ -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<QString>(), 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<QString>(), 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<QString>(), true);
|
||||
m_inputMessageQueue.push(msg);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void VORLocalizer::applySettings(const VORLocalizerSettings& settings, bool force)
|
||||
void VORLocalizer::applySettings(const VORLocalizerSettings& settings, const QList<QString>& 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<QString> 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<int>());
|
||||
}
|
||||
|
||||
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<int>());
|
||||
}
|
||||
|
||||
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<int> *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<int> *indexes = response.getVorLocalizerSettings()->getColumnSizes();
|
||||
|
||||
for (int i = 0; i < VORLocalizerSettings::VORDEMOD_COLUMNS; i++) {
|
||||
settings.m_columnSizes[i] = (*indexes)[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void VORLocalizer::webapiReverseSendSettings(QList<QString>& channelSettingsKeys, const VORLocalizerSettings& settings, bool force)
|
||||
void VORLocalizer::webapiReverseSendSettings(const QList<QString>& channelSettingsKeys, const VORLocalizerSettings& settings, bool force)
|
||||
{
|
||||
SWGSDRangel::SWGFeatureSettings *swgFeatureSettings = new SWGSDRangel::SWGFeatureSettings();
|
||||
// swgFeatureSettings->setOriginatorFeatureIndex(getIndexInDeviceSet());
|
||||
|
|
|
@ -46,19 +46,22 @@ public:
|
|||
|
||||
public:
|
||||
const VORLocalizerSettings& getSettings() const { return m_settings; }
|
||||
const QList<QString>& 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<QString>& settingsKeys, bool force) {
|
||||
return new MsgConfigureVORLocalizer(settings, settingsKeys, force);
|
||||
}
|
||||
|
||||
private:
|
||||
VORLocalizerSettings m_settings;
|
||||
QList<QString> m_settingsKeys;
|
||||
bool m_force;
|
||||
|
||||
MsgConfigureVORLocalizer(const VORLocalizerSettings& settings, bool force) :
|
||||
MsgConfigureVORLocalizer(const VORLocalizerSettings& settings, const QList<QString>& 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<QString>& settingsKeys, bool force = false);
|
||||
void updateChannels();
|
||||
void notifyUpdateChannels();
|
||||
void webapiReverseSendSettings(QList<QString>& featureSettingsKeys, const VORLocalizerSettings& settings, bool force);
|
||||
void webapiReverseSendSettings(const QList<QString>& featureSettingsKeys, const VORLocalizerSettings& settings, bool force);
|
||||
void webapiFormatFeatureReport(SWGSDRangel::SWGFeatureReport& response);
|
||||
|
||||
private slots:
|
||||
|
|
|
@ -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<QObject*>("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<QObject *>();
|
||||
|
||||
// Restore position of map
|
||||
|
@ -902,6 +933,7 @@ void VORLocalizerGUI::applyMapSettings()
|
|||
|
||||
// Move antenna icon to My Position
|
||||
QObject *stationObject = newMap->findChild<QObject*>("station");
|
||||
|
||||
if(stationObject != NULL)
|
||||
{
|
||||
QGeoCoordinate coords = stationObject->property("coordinate").value<QGeoCoordinate>();
|
||||
|
@ -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<QObject*>("station");
|
||||
|
||||
if(stationObject != NULL)
|
||||
if (stationObject != NULL)
|
||||
{
|
||||
QGeoCoordinate coords = stationObject->property("coordinate").value<QGeoCoordinate>();
|
||||
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<QObject*>("map");
|
||||
|
||||
if (map != nullptr)
|
||||
{
|
||||
QObject *stationObject = map->findChild<QObject*>("station");
|
||||
|
||||
if(stationObject != NULL)
|
||||
{
|
||||
QGeoCoordinate coords = stationObject->property("coordinate").value<QGeoCoordinate>();
|
||||
|
@ -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<QObject*>("map");
|
||||
|
||||
if (map != nullptr)
|
||||
{
|
||||
QObject *stationObject = map->findChild<QObject*>("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<QObject*>("map");
|
||||
|
||||
if (object)
|
||||
{
|
||||
double zoom = object->property("zoomLevel").value<double>();
|
||||
|
@ -1222,11 +1263,13 @@ bool VORLocalizerGUI::eventFilter(QObject *obj, QEvent *event)
|
|||
QResizeEvent *resizeEvent = static_cast<QResizeEvent *>(event);
|
||||
QSize oldSize = resizeEvent->oldSize();
|
||||
QSize size = resizeEvent->size();
|
||||
|
||||
if (oldSize.height() != size.height()) {
|
||||
redrawMap();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -226,6 +226,7 @@ private:
|
|||
PluginAPI* m_pluginAPI;
|
||||
FeatureUISet* m_featureUISet;
|
||||
VORLocalizerSettings m_settings;
|
||||
QList<QString> m_settingsKeys;
|
||||
RollupState m_rollupState;
|
||||
bool m_doApplySettings;
|
||||
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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<QString>& 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()
|
||||
|
|
|
@ -39,20 +39,23 @@ public:
|
|||
|
||||
public:
|
||||
const VORLocalizerSettings& getSettings() const { return m_settings; }
|
||||
const QList<QString>& 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<QString>& settingsKeys, bool force)
|
||||
{
|
||||
return new MsgConfigureVORLocalizerWorker(settings, force);
|
||||
return new MsgConfigureVORLocalizerWorker(settings, settingsKeys, force);
|
||||
}
|
||||
|
||||
private:
|
||||
VORLocalizerSettings m_settings;
|
||||
QList<QString> m_settingsKeys;
|
||||
bool m_force;
|
||||
|
||||
MsgConfigureVORLocalizerWorker(const VORLocalizerSettings& settings, bool force) :
|
||||
MsgConfigureVORLocalizerWorker(const VORLocalizerSettings& settings, const QList<QString>& settingsKeys, bool force) :
|
||||
Message(),
|
||||
m_settings(settings),
|
||||
m_settingsKeys(settingsKeys),
|
||||
m_force(force)
|
||||
{ }
|
||||
};
|
||||
|
@ -152,7 +155,7 @@ private:
|
|||
std::vector<int> 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<QString>& settingsKeys, bool force = false);
|
||||
void removeVORChannel(int navId);
|
||||
void addVORChannel(const VORLocalizerSubChannelSettings& subChannelSettings);
|
||||
void updateChannels(); //!< (re)allocate channels to service VORs
|
||||
|
|
|
@ -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:
|
|||
</div>
|
||||
<div id="generator">
|
||||
<div class="content">
|
||||
Generated 2022-11-27T10:57:52.904+01:00
|
||||
Generated 2022-11-30T21:42:22.227+01:00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
|||
</div>
|
||||
<div id="generator">
|
||||
<div class="content">
|
||||
Generated 2022-11-27T10:57:52.904+01:00
|
||||
Generated 2022-11-30T21:42:22.227+01:00
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -52,6 +52,10 @@ SWGVORLocalizerSettings::SWGVORLocalizerSettings() {
|
|||
m_center_shift_isSet = false;
|
||||
rollup_state = nullptr;
|
||||
m_rollup_state_isSet = false;
|
||||
column_indexes = new QList<qint32>();
|
||||
m_column_indexes_isSet = false;
|
||||
column_sizes = new QList<qint32>();
|
||||
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<qint32>();
|
||||
m_column_indexes_isSet = false;
|
||||
column_sizes = new QList<qint32>();
|
||||
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<void*>*)column_indexes, obj, "columnIndexes", "");
|
||||
}
|
||||
if(column_sizes && column_sizes->size() > 0){
|
||||
toJsonArray((QList<void*>*)column_sizes, obj, "columnSizes", "");
|
||||
}
|
||||
|
||||
return obj;
|
||||
}
|
||||
|
@ -319,6 +339,26 @@ SWGVORLocalizerSettings::setRollupState(SWGRollupState* rollup_state) {
|
|||
this->m_rollup_state_isSet = true;
|
||||
}
|
||||
|
||||
QList<qint32>*
|
||||
SWGVORLocalizerSettings::getColumnIndexes() {
|
||||
return column_indexes;
|
||||
}
|
||||
void
|
||||
SWGVORLocalizerSettings::setColumnIndexes(QList<qint32>* column_indexes) {
|
||||
this->column_indexes = column_indexes;
|
||||
this->m_column_indexes_isSet = true;
|
||||
}
|
||||
|
||||
QList<qint32>*
|
||||
SWGVORLocalizerSettings::getColumnSizes() {
|
||||
return column_sizes;
|
||||
}
|
||||
void
|
||||
SWGVORLocalizerSettings::setColumnSizes(QList<qint32>* 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;
|
||||
}
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
|
||||
|
||||
#include "SWGRollupState.h"
|
||||
#include <QList>
|
||||
#include <QString>
|
||||
|
||||
#include "SWGObject.h"
|
||||
|
@ -79,6 +80,12 @@ public:
|
|||
SWGRollupState* getRollupState();
|
||||
void setRollupState(SWGRollupState* rollup_state);
|
||||
|
||||
QList<qint32>* getColumnIndexes();
|
||||
void setColumnIndexes(QList<qint32>* column_indexes);
|
||||
|
||||
QList<qint32>* getColumnSizes();
|
||||
void setColumnSizes(QList<qint32>* column_sizes);
|
||||
|
||||
|
||||
virtual bool isSet() override;
|
||||
|
||||
|
@ -119,6 +126,12 @@ private:
|
|||
SWGRollupState* rollup_state;
|
||||
bool m_rollup_state_isSet;
|
||||
|
||||
QList<qint32>* column_indexes;
|
||||
bool m_column_indexes_isSet;
|
||||
|
||||
QList<qint32>* column_sizes;
|
||||
bool m_column_sizes_isSet;
|
||||
|
||||
};
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue