37 Q_DECLARE_PUBLIC(QStyleKitStyle)
57 struct MetricsCacheKey
59 QQStyleKitReader::ControlType type;
62 friend bool operator==(MetricsCacheKey lhs, MetricsCacheKey rhs)
noexcept
63 {
return lhs.type == rhs.type && lhs.state == rhs.state; }
64 friend size_t qHash(MetricsCacheKey key, size_t seed = 0)
noexcept
65 {
return qHashMulti(seed, key.type, key.state); }
72 struct QQStyleKitResolved
74 const QQStyleKitReader *reader =
nullptr;
75 const ControlMetrics *metrics =
nullptr;
76 const QWidget *widget =
nullptr;
78 bool isValid()
const {
return reader && metrics; }
80 const QQStyleKitDelegateProperties *background()
const;
88 struct QQStyleKitLayoutResolved
90 const ControlMetrics *metrics =
nullptr;
91 const QQStyleKitControlProperties *staticProps =
nullptr;
94 bool isValid()
const {
return metrics; }
96 const QQStyleKitDelegateProperties *background()
const;
99 QFont font()
const {
return staticFont; }
103 template <
typename T>
106 decltype(std::declval<T>().resolveMask()) resolveMask;
109 T reverted(T current) && {
110 oldWidgetValue.setResolveMask(oldWidgetValue.resolveMask() & resolveMask);
111 current.setResolveMask(current.resolveMask() & ~resolveMask);
112 current.resolve(oldWidgetValue);
113 current.setResolveMask(current.resolveMask() | oldWidgetValue.resolveMask());
119 QStyleKitStylePrivate();
124 void unsetStyleFont(QWidget *widget);
125 void setStyleFont(QWidget *widget);
127 void unsetStylePalette(QWidget *widget);
128 void setStylePalette(QWidget *widget,
const QPalette &stylePalette)
const;
129 void refreshStylePalette(QWidget *widget);
131 QQStyleKitReader *readerForWidget(
const QWidget *widget)
const;
132 void cleanupWidgetReader(
const QWidget *widget)
const;
134 QQStyleKitReader *readerForItemViewItem(
const QWidget *widget, quint64 itemKey)
const;
135 void cleanupItemViewItemReaders(
const QWidget *widget)
const;
136 static quint64 itemViewItemKeyForOption(
const QStyleOption *opt);
138 QQStyleKitReader *ensureSharedReader()
const;
140 QQSK::State resolvedStateFor(QQStyleKitReader::ControlType type, QStyle::State state)
const;
142 QQStyleKitResolved resolve(
const QWidget *w, QQStyleKitReader::ControlType type, QStyle::State state)
const;
143 QQStyleKitResolved resolveItemViewItem(
const QWidget *w,
const QStyleOption *opt,
144 QQStyleKitReader::ControlType type, QStyle::State state)
const;
146 QQStyleKitLayoutResolved resolveLayout(QQStyleKitReader::ControlType type,
147 QStyle::State state)
const;
149 const ControlMetrics &metricsFor(QQStyleKitReader::ControlType type, QQSK::State state)
const;
150 void clearMetricsCache();
152 ControlMetrics metricsForReader(QQStyleKitReader *reader)
const;
154 void drawControlIndicator(
const QQStyleKitDelegateProperties *indicator,
const QRectF &rect, QPainter *p)
const;
156 const QRect &rect,
const QString &text, uint textFlags, QPainter *p)
const;
157 void drawStyledItemRect(
const QQStyleKitDelegateProperties *,
const QRectF &rect, QPainter *p)
const;
158 void drawStyledItemImage(
const QQStyleKitImageProperties *image,
const QRectF &rect,
159 qreal opacity, QPainter *p)
const;
161 QRect getAlignedRectInContainer(
const QRect &container,
const QSize &indicatorSize,
162 uint alignment,
const QMargins &padding,
163 const QMargins &indicatorMargins)
const;
165 QQmlEngine *qmlEngine =
nullptr;
166 QQStyleKitStyle *style =
nullptr;
168 mutable QQStyleKitReader *sharedReader =
nullptr;
172 mutable QHash<
const QWidget *, QQStyleKitReader *> widgetReaders;
176 mutable QHash<MetricsCacheKey, ControlMetrics> metricsCache;