Initial commit
This commit is contained in:
commit
b7d90b9afe
16245 files changed
+3396666
No files matched your search
+149
@@ -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
|
||||
+112
@@ -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
|
||||
Reference in new issue
Block a user