Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qquickdeferredexecute_p_p.h
Go to the documentation of this file.
1// Copyright (C) 2017 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// Qt-Security score:significant reason:default
4
5#ifndef QQUICKDEFERREDEXECUTE_P_P_H
6#define QQUICKDEFERREDEXECUTE_P_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. It exists purely as an
13// implementation detail. This header file may change from version to
14// version without notice, or even be removed.
15//
16// We mean it.
17//
18
19#include <QtCore/qglobal.h>
20#include <QtQuickTemplates2/private/qquickdeferredpointer_p_p.h>
21#include <QtQuickTemplates2/private/qtquicktemplates2global_p.h>
22
23#include <QtQml/private/qqmlvme_p.h>
24
26
27class QString;
28class QObject;
29
30namespace QtQuickPrivate {
31 Q_QUICKTEMPLATES2_EXPORT void beginDeferred(QObject *object, const QString &property,
32 QQuickUntypedDeferredPointer *delegate, bool isOwnState, QQmlEngine *engine = nullptr);
33 Q_QUICKTEMPLATES2_EXPORT void cancelDeferred(QObject *object, const QString &property);
34 Q_QUICKTEMPLATES2_EXPORT void completeDeferred(QObject *object, const QString &property,
35 QQuickUntypedDeferredPointer *delegate, QQmlEngine *engine = nullptr);
36}
37
38template<typename T>
39void quickBeginDeferred(QObject *object, const QString &property, QQuickDeferredPointer<T> &delegate)
40{
41 if (!QQmlVME::componentCompleteEnabled())
42 return;
43
44 // Populating can re-enter this: writing the property notifies observers, and a binding among
45 // them may read it back. Beginning again would orphan the outer DeferredState.
46 if (delegate.isExecuting())
47 return;
48
49 QtQuickPrivate::beginDeferred(object, property, &delegate, delegate.setExecuting(true));
50 delegate.setExecuting(false);
51}
52
53template<typename T>
54void quickBeginAttachedDeferred(QObject *object, const QString &property,
55 QQuickDeferredPointer<T> &delegate, QQmlEngine *engine)
56{
57 if (!QQmlVME::componentCompleteEnabled())
58 return;
59
60 QtQuickPrivate::beginDeferred(object, property, &delegate, delegate.setExecuting(true), engine);
61 delegate.setExecuting(false);
62}
63
64inline void quickCancelDeferred(QObject *object, const QString &property)
65{
66 QtQuickPrivate::cancelDeferred(object, property);
67}
68
69template<typename T>
70void quickCompleteDeferred(QObject *object, const QString &property, QQuickDeferredPointer<T> &delegate)
71{
72 Q_ASSERT(!delegate.wasExecuted());
73 QtQuickPrivate::completeDeferred(object, property, &delegate);
74 delegate.setExecuted();
75}
76
77template<typename T>
78void quickCompleteAttachedDeferred(QObject *object, const QString &property,
79 QQuickDeferredPointer<T> &delegate, QQmlEngine *engine)
80{
81 Q_ASSERT(!delegate.wasExecuted());
82 QtQuickPrivate::completeDeferred(object, property, &delegate, engine);
83 delegate.setExecuted();
84}
85
86QT_END_NAMESPACE
87
88#endif // QQUICKDEFERREDEXECUTE_P_P_H
Groups actions together.
bool handleShortcutEvent(QObject *object, QShortcutEvent *event)
bool trigger(QObject *, bool doToggle)
void itemDestroyed(QQuickItem *item) override
void registerItem(QQuickItem *item)
bool watchItem(QQuickItem *item)
QQuickActionGroup * group
void itemVisibilityChanged(QQuickItem *item) override
bool unwatchItem(QQuickItem *item)
void unregisterItem(QQuickItem *item)
Mutually-exclusive group of checkable buttons.
Combined button and popup list for selecting options.
Q_QUICKTEMPLATES2_EXPORT void completeDeferred(QObject *object, const QString &property, QQuickUntypedDeferredPointer *delegate, QQmlEngine *engine=nullptr)
Q_QUICKTEMPLATES2_EXPORT void beginDeferred(QObject *object, const QString &property, QQuickUntypedDeferredPointer *delegate, bool isOwnState, QQmlEngine *engine=nullptr)
Q_QUICKTEMPLATES2_EXPORT void cancelDeferred(QObject *object, const QString &property)
void quickBeginAttachedDeferred(QObject *object, const QString &property, QQuickDeferredPointer< T > &delegate, QQmlEngine *engine)
void quickCancelDeferred(QObject *object, const QString &property)
void quickCompleteDeferred(QObject *object, const QString &property, QQuickDeferredPointer< T > &delegate)
void quickCompleteAttachedDeferred(QObject *object, const QString &property, QQuickDeferredPointer< T > &delegate, QQmlEngine *engine)
void quickBeginDeferred(QObject *object, const QString &property, QQuickDeferredPointer< T > &delegate)