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

@@ -0,0 +1,149 @@
/**
* @RDE_HEADER@
* GUI Plugin for OperatorManagement
* $Id$
* $HeadURL$
* $Author$
*/
#include "opm_settings_group.h"
#include <QJsonDocument>
#include <QJsonParseError>
#include <LtsUtilsSettings/settings.h>
namespace OperatorManagement
{
SettingsGroup::SettingsGroup(const QString &group, const QString &id, SubSetHandler *handler, LtsUtils::OperatorSettings *opSettings)
: m_group(group)
, m_id(id)
, m_subSetHandler(handler)
, m_opSettings(opSettings)
, m_logger(getLogger("SettingsGroup"))
{
m_logger.setNoSpace(false);
}
bool SettingsGroup::init()
{
if (!m_subSetHandler || !m_opSettings)
{
// MQS-474 Crash beim Öffnen des Script-Editors:
ERROR_LOG(m_logger) << " SettingsGroup::init() failed. this=" << this
<< ", typeid.name='" << typeid(*this).name()
<< ", m_id='" << m_id
<< ", m_group='" << m_group;
#ifdef LTS_DEBUG
abort(); // Bitte Hinweis an Norbert
#else
return false;
#endif // LTS_DEBUG
}
m_data = jsonObjectFromSettings(m_group, m_id);
return !m_data.isEmpty();
}
QJsonValue SettingsGroup::value(const QString &key)
{
return m_data.value(key);
}
void SettingsGroup::setValue(const QString &key, const QJsonValue &value)
{
m_data.insert(key, value);
}
void SettingsGroup::registerSubset(const SubSet &subset)
{
m_subsets.append(subset);
}
void SettingsGroup::startLoad()
{
if (!aboutToLoad())
return;
#ifdef LTS_DEBUG
// MQS-474 Crash beim Öffnen des Script-Editors:
if (!m_subSetHandler)
abort(); // Bitte Hinweis an Norbert
#else
if (!m_subSetHandler)
{
ERROR_LOG(m_logger) << " SettingsGroup::startLoad() : no m_subSetHandler. this=" << this
<< ", typeid.name='" << typeid(*this).name()
<< ", m_id='" << m_id
<< ", m_group='" << m_group;
return;
}
#endif // LTS_DEBUG
for (SubSet &subset : m_subsets)
{
subset.data = m_data.value(subset.name); //.toObject();
m_subSetHandler->loadSubSet(subset);
}
}
void SettingsGroup::startSave() // NOTE: saves settings from the workspaceId it gets from m_session->workspaceId, not the workspaceId it was given in the constructor !
{
if (!aboutToSave())
return;
for (SubSet &subset : m_subsets)
{
DEBUG_LOG(m_logger) << "saving11 subset for group: " << m_group
<< ", id:" << m_id
<< ", subset.name=" << subset.name
<< ", subset.data=" << subset.data.toString();
bool saveSubSetOk = m_subSetHandler->saveSubSet(subset); // saveSubSet fills .data
if (!saveSubSetOk)
WARNING_LOG(m_logger) << "saving22 subset failed for group: " << m_group
<< ", id:" << m_id
<< ", subset.name=" << subset.name
<< ", subset.data=" << subset.data.toString();
else
DEBUG_LOG(m_logger) << "saving22 subset for group: " << m_group
<< ", id:" << m_id
<< ", subset.name=" << subset.name
<< ", subset.data=" << subset.data.toString();
m_data.insert(subset.name, subset.data);
}
m_opSettings->setValue(m_group, m_id, QJsonDocument(m_data).toJson(QJsonDocument::Compact));
}
void SettingsGroup::startDelete()
{
if (!aboutToDelete())
return;
m_opSettings->removeValue(m_group, m_id);
}
QJsonObject SettingsGroup::jsonObjectFromSettings(const QString &group, const QString &id) const
{
QString settingsString = m_opSettings->value(group, id, QString()).toString();
if (settingsString.isEmpty())
return QJsonObject();
QJsonParseError err;
QJsonDocument doc(QJsonDocument::fromJson(settingsString.toUtf8(), &err));
if (err.error != QJsonParseError::NoError)
return QJsonObject();
return doc.object();
}
} //namespace OperatorManagement
@@ -0,0 +1,112 @@
/**
* @RDE_HEADER@
* Gui Plugin for OperatorManagement
* $Id$
* $HeadURL$
* $Author$
*/
#pragma once
#include <QJsonObject>
#include <QVector>
#include <OperatorManagement/logger.h>
namespace LtsUtils { class OperatorSettings; }
namespace OperatorManagement
{
enum class SubSetType
{
SS_UNKNOWN = -1,
SS_MAP_SETTINGS,
SS_FUNCTION_BARS,
SS_FUNCTION_KEYS,
SS_SYMBOL_FILTER,
SS_BUILDING_COMPONENT_FILTER,
SS_AES_FILTER
};
struct SubSet final
{
SubSet() = default;
SubSet(const QString &_name, SubSetType _type = SubSetType::SS_UNKNOWN)
: name(_name), type(_type), bIsSystemDefault(false) {}
void markAsSystemDefault(bool mark = true) { bIsSystemDefault = mark; }
bool isMarkedAsSystemDefault() const { return bIsSystemDefault; }
QString name;
SubSetType type = SubSetType::SS_UNKNOWN;
QJsonValue data;
bool bIsSystemDefault;
};
class SubSetHandler // OPM Setting's InterfaceImpl, which is a QObject, inherites this
{
public:
SubSetHandler() = default;
virtual ~SubSetHandler() = default;
virtual bool saveSubSet(SubSet &subset) = 0;
virtual bool loadSubSet(SubSet &subset) = 0;
};
class SettingsGroup
{
public:
SettingsGroup(const QString &group, const QString &id, SubSetHandler *handler, LtsUtils::OperatorSettings *opSettings);
virtual ~SettingsGroup() = default;
bool init();
const QString &id() const { return m_id; }
const QJsonObject &data() const { return m_data; }
const QString &group() const { return m_group; }
void markSubsetAsSystemDefault(bool mark = true)
{
for (SubSet &itemRef : m_subsets)
itemRef.markAsSystemDefault(mark);
}
bool isSubsetMarkedAsSystemDefault()
{
if (m_subsets.isEmpty())
return false;
return m_subsets.first().isMarkedAsSystemDefault();
}
QJsonValue value(const QString &key);
void setValue(const QString &key, const QJsonValue &value);
void startLoad();
void startSave();
void startDelete();
void registerSubset(const SubSet &subset);
protected:
virtual bool aboutToLoad() { return true; }
virtual bool aboutToSave() { return true; }
virtual bool aboutToDelete() { return true; }
QJsonObject jsonObjectFromSettings(const QString &group, const QString &id) const;
QString m_group;
QString m_id;
SubSetHandler *m_subSetHandler; //not owning
QJsonObject m_data;
QVector<SubSet> m_subsets;
LtsUtils::OperatorSettings *m_opSettings; //not owning
NGL::INGLLogger &m_logger;
};
} // namespace OperatorManagement