diff options
Diffstat (limited to 'src/qml/qml/qqmlproperty_p.h')
-rw-r--r-- | src/qml/qml/qqmlproperty_p.h | 80 |
1 files changed, 34 insertions, 46 deletions
diff --git a/src/qml/qml/qqmlproperty_p.h b/src/qml/qml/qqmlproperty_p.h index c54d066152..fd07547d60 100644 --- a/src/qml/qml/qqmlproperty_p.h +++ b/src/qml/qml/qqmlproperty_p.h @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtQml module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2016 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only #ifndef QQMLPROPERTY_P_H #define QQMLPROPERTY_P_H @@ -52,14 +16,17 @@ // #include "qqmlproperty.h" -#include "qqmlengine.h" #include <private/qobject_p.h> -#include <private/qtqmlglobal_p.h> -#include <private/qqmlrefcount_p.h> #include <private/qqmlcontextdata_p.h> #include <private/qqmlpropertydata_p.h> #include <private/qqmlpropertyindex_p.h> +#include <private/qqmlrefcount_p.h> +#include <private/qtqmlglobal_p.h> + +#include <QtQml/qqmlengine.h> + +#include <QtCore/qpointer.h> QT_BEGIN_NAMESPACE @@ -70,9 +37,16 @@ class QQmlMetaObject; class QQmlAbstractBinding; class QQmlBoundSignalExpression; -class Q_QML_PRIVATE_EXPORT QQmlPropertyPrivate : public QQmlRefCount +class Q_QML_EXPORT QQmlPropertyPrivate final : public QQmlRefCounted<QQmlPropertyPrivate> { public: + enum class InitFlag { + None = 0x0, + AllowId = 0x1, + AllowSignal = 0x2 + }; + Q_DECLARE_FLAGS(InitFlags, InitFlag); + QQmlRefPointer<QQmlContextData> context; QPointer<QQmlEngine> engine; QPointer<QObject> object; @@ -82,6 +56,9 @@ public: QString nameCache; + // ### Qt7: Get rid of this. + static bool resolveUrlsOnAssignment(); + QQmlPropertyPrivate() {} QQmlPropertyIndex encodedIndex() const @@ -91,7 +68,7 @@ public: QQmlRefPointer<QQmlContextData> effectiveContext() const; - void initProperty(QObject *obj, const QString &name); + void initProperty(QObject *obj, const QString &name, InitFlags flags = InitFlag::None); void initDefault(QObject *obj); bool isValueType() const; @@ -102,16 +79,22 @@ public: QVariant readValueProperty(); bool writeValueProperty(const QVariant &, QQmlPropertyData::WriteFlags); - static QQmlMetaObject rawMetaObjectForType(QQmlEnginePrivate *, int); + static QQmlMetaObject rawMetaObjectForType(QMetaType metaType); static bool writeEnumProperty(const QMetaProperty &prop, int idx, QObject *object, const QVariant &value, int flags); static bool writeValueProperty(QObject *, const QQmlPropertyData &, const QQmlPropertyData &valueTypeData, const QVariant &, const QQmlRefPointer<QQmlContextData> &, QQmlPropertyData::WriteFlags flags = {}); + static bool resetValueProperty(QObject *, + const QQmlPropertyData &, const QQmlPropertyData &valueTypeData, + const QQmlRefPointer<QQmlContextData> &, + QQmlPropertyData::WriteFlags flags = {}); static bool write(QObject *, const QQmlPropertyData &, const QVariant &, const QQmlRefPointer<QQmlContextData> &, QQmlPropertyData::WriteFlags flags = {}); + static bool reset(QObject *, const QQmlPropertyData &, + QQmlPropertyData::WriteFlags flags = {}); static void findAliasTarget(QObject *, QQmlPropertyIndex, QObject **, QQmlPropertyIndex *); struct ResolvedAlias @@ -156,19 +139,24 @@ public: static bool write(const QQmlProperty &that, const QVariant &, QQmlPropertyData::WriteFlags); static QQmlPropertyIndex propertyIndex(const QQmlProperty &that); static QMetaMethod findSignalByName(const QMetaObject *mo, const QByteArray &); + static QMetaProperty findPropertyByName(const QMetaObject *mo, const QByteArray &); static bool connect(const QObject *sender, int signal_index, const QObject *receiver, int method_index, int type = 0, int *types = nullptr); static void flushSignal(const QObject *sender, int signal_index); - static QVariant urlSequence(const QVariant &value); + static QList<QUrl> urlSequence(const QVariant &value); + static QList<QUrl> urlSequence( + const QVariant &value, const QQmlRefPointer<QQmlContextData> &ctxt); static QQmlProperty create( QObject *target, const QString &propertyName, - const QQmlRefPointer<QQmlContextData> &context); + const QQmlRefPointer<QQmlContextData> &context, + QQmlPropertyPrivate::InitFlags flags); }; Q_DECLARE_OPERATORS_FOR_FLAGS(QQmlPropertyPrivate::BindingFlags) +Q_DECLARE_OPERATORS_FOR_FLAGS(QQmlPropertyPrivate::InitFlags); QT_END_NAMESPACE |