#pragma once #include #include #include #include class QJsonObject; namespace LtsUtils { class LTSUTILSSETTINGS_EXPORT Settings : public QObject { Q_OBJECT public: ~Settings() = default; void setValue(const QString& group, const QString& identifier, const QVariant& value); void removeValue(const QString& group, const QString& identifier); QVariant value(const QString& group, const QString& identifier, const QVariant& defaultValue = QVariant()) const; 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