Files
qt-creator/share/qtcreator/qml/qmlpuppet/container/propertyvaluecontainer.h
Marco Bubke c13e2b89f5 QmlDesigner: Add type enumeration to auxiliary data
Auxiliary data so far used naming conventions to declare the kind of the
data. Now an enumeration is used. The auxiliaryData(...) is returning an
optional too so that it is known if a value exists. There is now
auxiliaryDataWithDefault(...) which is returning an invalid
QVariant instead.

The instance cache is now disabled because there is not notification for
information changes. So if we get the real data from the node instances
there will be no information changes because nothing changed. So the
form editor is a strange state of being reset but not all data
arrived. Before this patch there were still changes happen because of
some side effects that auxiliary properties were sent which were never
intended to be sent. If we re-enable the cache we need to send
information changes or every view must expect that the information is
already there.

Task-number: QDS-7338
Change-Id: I0cafd149c53df552c7c8442f1e8ba87f5451dbd1
Reviewed-by: Aleksei German <aleksei.german@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
2022-08-09 17:52:03 +00:00

77 lines
2.8 KiB
C++

/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of Qt Creator.
**
** 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 General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3 as published by the Free Software
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
** 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-3.0.html.
**
****************************************************************************/
#pragma once
#include <QDataStream>
#include <QMetaType>
#include <QVariant>
#include <QString>
#include "nodeinstanceglobal.h"
namespace QmlDesigner {
class PropertyValueContainer
{
public:
PropertyValueContainer();
PropertyValueContainer(qint32 instanceId,
const PropertyName &name,
const QVariant &value,
const TypeName &dynamicTypeName,
AuxiliaryDataType auxiliaryDataType = AuxiliaryDataType::None);
PropertyValueContainer(qint32 option);
qint32 instanceId() const;
PropertyName name() const;
QVariant value() const;
bool isDynamic() const;
TypeName dynamicTypeName() const;
void setReflectionFlag(bool b);
bool isReflected() const;
AuxiliaryDataType auxiliaryDataType() const;
friend QDataStream &operator<<(QDataStream &out, const PropertyValueContainer &container);
friend QDataStream &operator>>(QDataStream &in, PropertyValueContainer &container);
friend bool operator==(const PropertyValueContainer &first,
const PropertyValueContainer &second);
friend bool operator<(const PropertyValueContainer &first, const PropertyValueContainer &second);
private:
qint32 m_instanceId;
PropertyName m_name;
QVariant m_value;
TypeName m_dynamicTypeName;
AuxiliaryDataType m_auxiliaryDataType = AuxiliaryDataType::None;
bool m_isReflected = false;
};
QDebug operator <<(QDebug debug, const PropertyValueContainer &container);
} // namespace QmlDesigner
Q_DECLARE_METATYPE(QmlDesigner::PropertyValueContainer)