// Copyright (C) 2025 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 // Qt-Security score:significant reason:default #ifndef QQSTYLEKITPROPERTYRESOLVER_P_H #define QQSTYLEKITPROPERTYRESOLVER_P_H // // W A R N I N G // ------------- // // This file is not part of the Qt API. It exists purely as an // implementation detail. This header file may change from version to // version without notice, or even be removed. // // We mean it. // #include #include "qqstylekitglobal_p.h" #include "qqstylekitstorage_p.h" QT_BEGIN_NAMESPACE class QQStyleKitControl; class QQStyleKitControls; class QQStyleKitStyle; class QQStyleKitReader; class QQStyleKitPropertyGroup; class QQStyleKitPropertyResolver { Q_GADGET public: enum class PathId { ExcludeSubType, IncludeSubType }; Q_ENUM(PathId) struct PropertyPathIds { PropertyPathId property; PropertyPathId alternative; PropertyPathId subTypeProperty; PropertyPathId subTypeAlternative; }; static QVariant readStyleProperty( const QQStyleKitPropertyGroup *group, const QQSK::Property property, const QQSK::Property alternative = QQSK::Property::NoProperty); static bool writeStyleProperty( const QQStyleKitPropertyGroup *group, const QQSK::Property property, const QVariant &value); static bool hasLocalStyleProperty( const QQStyleKitPropertyGroup *group, const QQSK::Property property); private: static bool s_styleWarningsIssued; static bool s_isReadingProperty; static QQSK::State s_cachedState; static QVarLengthArray s_cachedStateList; private: template static QVariant readPropertyInStorageForState( const PropertyPathId main, const PropertyPathId alternative, const T *storageProvider, QQSK::State state); template static QVariant readPropertyInControlForStates( const PropertyPathId main, const PropertyPathId alternative, const QQStyleKitControl *control, INDICES_CONTAINER &stateListIndices, int startIndex, int recursionLevel); static QVariant readPropertyInControl( const PropertyPathIds &ids, const QQStyleKitControl *control); static QVariant readPropertyInRelevantControls( const QQStyleKitControls *controls, const PropertyPathIds &ids, const QQStyleKitExtendedControlType exactType, const QList baseTypes); static QVariant readPropertyInStyle( const PropertyPathIds &ids, const QQStyleKitExtendedControlType exactType, const QList baseTypes, const QQStyleKitStyle *style); static QVariant readProperty( const PropertyPathIds &ids, QQStyleKitReader *styleReader, QQStyleKitStyle *style); static PropertyPathId pathId( const QQStyleKitPropertyGroup *group, const QQSK::Property property, PathId flag); static const QList baseTypesForType( QQStyleKitExtendedControlType exactType); static void cacheReaderState(QQSK::State state); static void addInstanceVariationsToReader( QQStyleKitReader *styleReader, const QStringList &inAppVariationNames, const QVarLengthArray &stylesAndThemes); static void addTypeVariationsToReader( QQStyleKitReader *styleReader, const QQStyleKitExtendedControlType parentType, const QQStyleKitStyle *style); static void rebuildVariationsForReader( QQStyleKitReader *styleReader, const QQStyleKitStyle *style); }; QT_END_NAMESPACE #endif // QQSTYLEKITPROPERTYRESOLVER_P_H