Initial commit

This commit is contained in:
torsten committed 2026-08-13 18:33:10 +02:00
commit b7d90b9afe
16245 files changed
+3396666

No files matched your search

+267
View File
@@ -0,0 +1,267 @@
/**
* @RDE_HEADER@
* Operator Map Settings
* $Id$
* $HeadURL$
* $Author$
*/
// Own
#include "operator_map_settings.h"
//Qt
#include <QListIterator>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
//----------------------------------------------------------------------------
namespace SituationMap
{
bool OperatorMapSettings::isEmpty() const
{
return mode == Mode::Undefined;
}
bool OperatorMapSettings::getLayerParameter(const QString &layername, LayerParameter& layerParameterOut) const
{
const QVector<QPair<QString, LayerParameter>>::const_iterator it =
std::find_if(orderedLayers.cbegin(), orderedLayers.cend(),
[&layername](const QPair<QString, SituationMap::LayerParameter> &pair) { return pair.first == layername; } );
if (it == orderedLayers.end())
return false;
layerParameterOut = (*it).second;
return true;
}
bool OperatorMapSettings::updateLayerParameter(const QString &layername, const LayerParameter& layerParameter)
{
QVector<QPair<QString, LayerParameter>>::iterator it =
std::find_if(orderedLayers.begin(), orderedLayers.end(),
[&layername](const QPair<QString, SituationMap::LayerParameter> &pair) { return pair.first == layername; } );
if (it == orderedLayers.end())
return false;
// update
(*it).second = layerParameter;
return false;
}
QJsonObject OperatorMapSettings::toJsonObject() const
{
QJsonObject obj;
// mode
obj[QLatin1String("mode")] = static_cast<int>(mode);
obj[QLatin1String("viewpoint")] = viewpoint.toJsonObject();
obj[QLatin1String("camera")] = camera.toJsonObject();
// below ground:
obj[QLatin1String("navigationConstraint")] = static_cast<int>(navigationConstraint);
obj[QLatin1String("baseSurfaceOpacity")] = static_cast<double>(baseSurfaceOpacity);
// orderedLayers
{
QJsonArray jArray;
for (const QPair<QString, LayerParameter> &pair : qAsConst(orderedLayers))
{
const QString &layername = pair.first;
const LayerParameter &lp = pair.second;
QJsonObject objTemp = lp.toJsonObject();
objTemp[QLatin1String("layername")] = layername;
jArray.append(objTemp);
}
obj[QLatin1String("orderedLayers")] = jArray;
}
// orderedOverlays
{
QJsonArray jArray;
for (const int overlayId : orderedOverlays)
{
QJsonObject objTemp;
objTemp[QLatin1String("overlayId")] = overlayId;
jArray.append(objTemp);
}
obj[QLatin1String("orderedOverlays")] = jArray;
}
// MapWidgetSettings
obj[QLatin1String("mapWidgetSettings")] = mapWidgetSettings.toJsonObject();
// symbolScale
obj[QLatin1String("symbolScale")] = symbolScale;
// jumpPoints
{
QJsonArray jArray;
for (const JumpPointData &jpd : jumpPoints)
jArray.append(jpd.toJsonObject());
obj[QLatin1String("jumpPoints")] = jArray;
}
return obj;
}
QByteArray OperatorMapSettings::toJson() const
{
// final - toJson
QJsonDocument jDoc(toJsonObject());
return jDoc.toJson();
}
bool OperatorMapSettings::fromJson(const QByteArray &json)
{
QJsonParseError parseError;
QJsonDocument jDoc(QJsonDocument::fromJson(json, &parseError));
if (parseError.error != QJsonParseError::NoError)
{
qCritical() << " QJsonParseError->errorString: '" << parseError.errorString() << "'"
<< ", offset: " << parseError.offset;
return false;
}
return fromJsonObject(jDoc.object());
}
bool OperatorMapSettings::fromJsonObject(const QJsonObject &json)
{
// mode
mode = static_cast<Mode>(json[QLatin1String("mode")].toInt(int(Mode::Undefined)));
// viewpoint
viewpoint = Viewpoint2D::read(json[QLatin1String("viewpoint")].toObject());
// camera
camera = Camera::read(json[QLatin1String("camera")].toObject());
// below ground:
navigationConstraint = static_cast<SituationMap::NavigationConstraint>(json[QLatin1String("navigationConstraint")].toInt(int(SituationMap::NavigationConstraint::Undefined)));
baseSurfaceOpacity = static_cast<float>(json[QLatin1String("baseSurfaceOpacity")].toDouble(1.0));
// orderedLayers
{
const QJsonArray jArray = json[QLatin1String("orderedLayers")].toArray();
orderedLayers.clear();
orderedLayers.reserve(jArray.size());
for (const auto &val : jArray)
{
const QJsonObject &objTemp = val.toObject();
const QString &layername = objTemp[QLatin1String("layername")].toString();
if (layername.isEmpty())
continue;
const LayerParameter &lp = LayerParameter::read(objTemp);
orderedLayers.append(QPair<QString, LayerParameter>(layername, lp));
} // for
}
// orderedOverlays
{
const QJsonArray jArray = json[QLatin1String("orderedOverlays")].toArray();
orderedOverlays.clear();
orderedOverlays.reserve(jArray.size());
for (const auto &val : jArray)
{
const QJsonObject &objTemp = val.toObject();
const int overlayId = objTemp[QLatin1String("overlayId")].toInt();
orderedOverlays.append(overlayId);
} // for
}
// MapWidgetSettings
mapWidgetSettings = MapWidgetSettings::read(json[QLatin1String("mapWidgetSettings")].toObject());
// symbolScale
symbolScale = json[QLatin1String("symbolScale")].toDouble(1.0);
// range symbolScaleMinimum,symbolScaleMaximum is checked later at MapImpl::setSymbolScale()
// jumpPoints
{
const QJsonArray jArray = json[QLatin1String("jumpPoints")].toArray();
jumpPoints.clear();
jumpPoints.reserve(jArray.size());
for (const auto &val : jArray)
{
const QJsonObject &objTemp = val.toObject();
const JumpPointData &jpd = JumpPointData::read(objTemp);
jumpPoints.append(jpd);
} // for
}
return true;
}
//
// MapWidgetSettings
//
MapWidgetSettings MapWidgetSettings::read(const QJsonObject &json)
{
MapWidgetSettings mws;
if (json.contains(QLatin1String("gridVisibility"))) mws.gridVisibility = json[QLatin1String("gridVisibility")].toBool();
if (json.contains(QLatin1String("positionStringVisibility"))) mws.positionStringVisibility = json[QLatin1String("positionStringVisibility")].toBool();
if (json.contains(QLatin1String("timeStringVisibility"))) mws.timeStringVisibility = json[QLatin1String("timeStringVisibility")].toBool();
// [GUEZE-2921] add missing exerciseTimeString:
if (json.contains(QLatin1String("exerciseTimeStringVisibility"))) mws.exerciseTimeStringVisibility = json[QLatin1String("exerciseTimeStringVisibility")].toBool();
if (json.contains(QLatin1String("compassVisibility"))) mws.compassVisibility = json[QLatin1String("compassVisibility")].toBool();
if (json.contains(QLatin1String("overviewMapVisibility"))) mws.overviewMapVisibility = json[QLatin1String("overviewMapVisibility")].toBool();
return mws;
}
QJsonObject MapWidgetSettings::toJsonObject() const
{
QJsonObject json;
json[QLatin1String("gridVisibility")] = gridVisibility;
json[QLatin1String("positionStringVisibility")] = positionStringVisibility;
json[QLatin1String("timeStringVisibility")] = timeStringVisibility;
json[QLatin1String("exerciseTimeStringVisibility")] = exerciseTimeStringVisibility; // [GUEZE-2921] add missing exerciseTimeString
json[QLatin1String("compassVisibility")] = compassVisibility;
json[QLatin1String("overviewMapVisibility")] = overviewMapVisibility;
return json;
}
//
// JumpPointData
//
JumpPointData JumpPointData::read(const QJsonObject &json)
{
JumpPointData jpd;
jpd.key = json[QLatin1String("key")].toString();
if (json.contains(QLatin1String("originGeoLon")) && json.contains(QLatin1String("originGeoLat")))
{
jpd.originGeo.setX(json[QLatin1String("originGeoLon")].toDouble());
jpd.originGeo.setY(json[QLatin1String("originGeoLat")].toDouble());
jpd.originGeo.setZ(json[QLatin1String("originGeoZ")].toDouble());
}
jpd.mapScale = json[QLatin1String("mapScale")].toDouble(jpd.mapScale);
return jpd;
}
QJsonObject JumpPointData::toJsonObject() const
{
return {
{QLatin1String("key"), key},
{QLatin1String("originGeoLon"), originGeo.x()},
{QLatin1String("originGeoLat"), originGeo.y()},
{QLatin1String("originGeoZ"), originGeo.z()},
{QLatin1String("mapScale"), mapScale}
};
}
} // namespace SituationMap