// Copyright (C) 2016 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 #pragma once #include #include #include #include QT_FORWARD_DECLARE_CLASS(QLinearGradient) namespace QmlJS { class Document; class QMLJS_EXPORT PropertyReader { public: PropertyReader(Document::Ptr doc, AST::UiObjectInitializer *ast); bool hasProperty(const QString &propertyName) const { return m_properties.contains(propertyName); } QVariant readProperty(const QString &propertyName) const { if (hasProperty(propertyName)) return m_properties.value(propertyName); else return QVariant(); } QString readAstValue(const QString &propertyName) const { if (hasProperty(propertyName)) return m_astPropertyValues.value(propertyName); else return QString(); } QLinearGradient parseGradient(const QString &propertyName, bool *isBound) const; QStringList properties() const { return m_properties.keys(); } bool isBindingOrEnum(const QString &propertyName) const { return m_bindingOrEnum.contains(propertyName); } private: QHash m_properties; QHash m_astPropertyValues; QList m_bindingOrEnum; AST::UiObjectInitializer *m_ast; Document::Ptr m_doc; }; } //QmlJS