// TODO: hdr #pragma once #include #include #include #include class QJsonObject; namespace LtsUtils { class LTSUTILSSETTINGS_EXPORT Settings : public QObject { Q_OBJECT public: ~Settings() = default; /** * @brief setValue writes a value, identified by the two keys 'group' and the 'identifier', via DDS into the database for the operator * @param group First key (e.g. "SituationMap") * @param identifier Secondary key (e.g. "zoom-value") * @param value The value to be saved to the key values in the database */ void setValue(const QString &group, const QString &identifier, const QVariant &value); /** * @brief removeValue removes a value, identified by the two keys 'group' and the 'identifier' * @param group First key (e.g. "SituationMap") * @param identifier Secondary key (e.g. "zoom-value") * @param value The value to be saved to the key values in the database */ void removeValue(const QString &group, const QString &identifier); /** * @brief getValue reads a value, identified by the two keys 'group' and the 'identifier', via DDS from the database for the operator * @param group First key (e.g. "SituationMap") * @param identifier Secondary key (e.g. "zoom-value") * @param defaultValue The value that is returned, if there was no such value, identified by the two keys, was saved in the database * @return */ QVariant value(const QString &group, const QString &identifier, const QVariant &defaultValue = QVariant()) const; /** * @brief identifiers returns a list of identifiers to the corresponding group * @param group First key (e.g. "SituationMap") * @return */ QStringList identifiers(const QString &group) const; void init(const QByteArray &settings); QByteArray exportSettings() const; void clear(); void dump(); protected: Settings() = default; signals: void valueChanged(const QString &group, const QString &identifier, const QVariant &value); void valueRemoved(const QString &group, const QString &identifier); protected: QHash m_data; }; class LTSUTILSSETTINGS_EXPORT OperatorSettings : public Settings { Q_OBJECT public: static OperatorSettings *getInstance(); }; class LTSUTILSSETTINGS_EXPORT ProjectSettings : public Settings { Q_OBJECT public: static ProjectSettings *getInstance(); static bool initFromFile(const QString &filename); static bool isFunctionEnabled(const QString &group, const QString &function); }; } // namespace LtsUtils