1// Copyright (C) 2016 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QQMLPROPERTYMAP_H
5#define QQMLPROPERTYMAP_H
6
7#include <QtQml/qtqmlglobal.h>
8#include <QtQml/qqmlregistration.h>
9
10#include <QtCore/QObject>
11#include <QtCore/QHash>
12#include <QtCore/QStringList>
13#include <QtCore/QVariant>
14
15QT_BEGIN_NAMESPACE
16
17
18class QQmlPropertyMapPrivate;
19class Q_QML_EXPORT QQmlPropertyMap : public QObject
20{
21 Q_OBJECT
22 QML_ANONYMOUS
23public:
24 explicit QQmlPropertyMap(QObject *parent = nullptr);
25 ~QQmlPropertyMap() override;
26
27 QVariant value(const QString &key) const;
28 void insert(const QString &key, const QVariant &value);
29 void insert(const QVariantHash &values);
30 void clear(const QString &key);
31 void freeze();
32
33 Q_INVOKABLE QStringList keys() const;
34
35 int count() const;
36 int size() const;
37 bool isEmpty() const;
38 bool contains(const QString &key) const;
39
40 QVariant &operator[](const QString &key);
41 QVariant operator[](const QString &key) const;
42
43Q_SIGNALS:
44 void valueChanged(const QString &key, const QVariant &value);
45
46protected:
47 virtual QVariant updateValue(const QString &key, const QVariant &input);
48
49 template<class DerivedType>
50 QQmlPropertyMap(DerivedType *derived, QObject *parentObj)
51 : QQmlPropertyMap(&DerivedType::staticMetaObject, parentObj)
52 {
53 Q_UNUSED(derived);
54 }
55
56private:
57 QQmlPropertyMap(const QMetaObject *staticMetaObject, QObject *parent);
58
59 Q_DECLARE_PRIVATE(QQmlPropertyMap)
60 Q_DISABLE_COPY(QQmlPropertyMap)
61};
62
63QT_END_NAMESPACE
64
65#endif
66

source code of qtdeclarative/src/qml/util/qqmlpropertymap.h