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
qqmlvaluetypeproxybinding.cpp
Go to the documentation of this file.
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// Qt-Security score:significant
4
6
8
9/*!
10 \class QQmlValueTypeProxyBinding
11 \inmodule QtQml
12 \internal
13*/
14QQmlValueTypeProxyBinding::QQmlValueTypeProxyBinding(QObject *o, QQmlPropertyIndex index)
15 : QQmlAbstractBinding(),
16 m_bindings(nullptr)
17{
18 m_target = o;
19 m_targetIndex = index;
20}
21
22QQmlValueTypeProxyBinding::~QQmlValueTypeProxyBinding()
23{
24 QQmlAbstractBinding *binding = m_bindings.data();
25 while (binding) {
26 binding->setAddedToObject(false);
27 binding = binding->nextBinding();
28 }
29}
30
31void QQmlValueTypeProxyBinding::setEnabled(bool e, QQmlPropertyData::WriteFlags flags)
32{
33 QQmlAbstractBinding *b = m_bindings.data();
34 while (b) {
35 b->setEnabled(e, flags);
36 b = b->nextBinding();
37 }
38}
39
40QQmlAbstractBinding *QQmlValueTypeProxyBinding::binding(QQmlPropertyIndex propertyIndex) const
41{
42 QQmlAbstractBinding *binding = m_bindings.data();
43
44 while (binding && binding->targetPropertyIndex() != propertyIndex)
45 binding = binding->nextBinding();
46
47 return binding;
48}
49
50/*!
51 \internal
52 Removes a collection of bindings, corresponding to the set bits
53 in \a mask.
54*/
55void QQmlValueTypeProxyBinding::removeBindings(quint32 mask)
56{
57 QQmlAbstractBinding *binding = m_bindings.data();
58 QQmlAbstractBinding *lastBinding = nullptr;
59
60 while (binding) {
61 const int valueTypeIndex = binding->targetPropertyIndex().valueTypeIndex();
62 if (valueTypeIndex != -1 && (mask & (1 << valueTypeIndex))) {
63 QQmlAbstractBinding *remove = binding;
64 remove->setAddedToObject(false);
65 binding = remove->nextBinding();
66
67 if (lastBinding == nullptr)
68 m_bindings = remove->nextBinding();
69 else
70 lastBinding->setNextBinding(remove->nextBinding());
71 } else {
72 lastBinding = binding;
73 binding = binding->nextBinding();
74 }
75 }
76}
77
78QT_END_NAMESPACE
Combined button and popup list for selecting options.