ImagingTools Core SDK
CProperty.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtCore/QJsonObject>
7#include <QtCore/QJsonArray>
8#include <QtCore/QJsonValue>
9#include <QtCore/QString>
10
11
12namespace imtoas
13{
14
15
16class CProperty
17{
18public:
19 enum CombineType
20 {
21 CT_SIMPLE,
22 CT_ALL_OF,
23 CT_ONE_OF,
24 CT_ANY_OF
25 };
26
27 CProperty();
28
29 [[nodiscard]] QString GetId() const;
30 void SetId(const QString& id);
31
32 [[nodiscard]] QString GetType() const;
33 void SetType(const QString& type);
34
35 [[nodiscard]] QString GetFormat() const;
36 void SetFormat(const QString& format);
37
38 [[nodiscard]] CombineType GetCombineType() const;
39 void SetCombineType(CombineType combineType);
40
41 [[nodiscard]] QList<CProperty> GetCombineProperties() const;
42 void SetCombineProperties(const QList<CProperty>& combineProperties);
43
44 [[nodiscard]] static bool ReadFromJsonObject(CProperty& object, const QJsonObject& jsonObject, const QJsonObject& globalObject);
45
46 bool operator==(const CProperty& other) const;
47 bool operator!=(const CProperty& other) const { return !(operator==(other)); }
48
49private:
50 QString m_id;
51 QString m_type;
52 QString m_format;
53 CombineType m_combineType;
54 QList<CProperty> m_combineProperties;
55};
56
57
58} // namespace imtoas
59
60
61Q_DECLARE_METATYPE(imtoas::CProperty);
62
63