diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/labs/stylekit/qqstylekitcontrolproperties.cpp | 33 | ||||
| -rw-r--r-- | src/labs/stylekit/qqstylekitcontrolproperties_p.h | 21 | ||||
| -rw-r--r-- | src/labs/stylekit/qqstylekitglobal_p.h | 3 | ||||
| -rw-r--r-- | src/labs/stylekit/qqstylekitreader.cpp | 23 |
4 files changed, 78 insertions, 2 deletions
diff --git a/src/labs/stylekit/qqstylekitcontrolproperties.cpp b/src/labs/stylekit/qqstylekitcontrolproperties.cpp index 9b11b560e5..42aed5342a 100644 --- a/src/labs/stylekit/qqstylekitcontrolproperties.cpp +++ b/src/labs/stylekit/qqstylekitcontrolproperties.cpp @@ -784,6 +784,39 @@ void QQStyleKitTextProperties::setAlignment(Qt::Alignment alignment) handleStylePropertyChanged(&QQStyleKitTextProperties::alignmentChanged); } +bool QQStyleKitTextProperties::bold() const +{ + return styleProperty<bool>(QQSK::Property::Bold, false); +} + +void QQStyleKitTextProperties::setBold(bool bold) +{ + if (setStyleProperty(QQSK::Property::Bold, bold)) + handleStylePropertyChanged(&QQStyleKitTextProperties::boldChanged); +} + +bool QQStyleKitTextProperties::italic() const +{ + return styleProperty<bool>(QQSK::Property::Italic, false); +} + +void QQStyleKitTextProperties::setItalic(bool italic) +{ + if (setStyleProperty(QQSK::Property::Italic, italic)) + handleStylePropertyChanged(&QQStyleKitTextProperties::italicChanged); +} + +qreal QQStyleKitTextProperties::pointSize() const +{ + return styleProperty<qreal>(QQSK::Property::PointSize); +} + +void QQStyleKitTextProperties::setPointSize(qreal pointSize) +{ + if (setStyleProperty(QQSK::Property::PointSize, pointSize)) + handleStylePropertyChanged(&QQStyleKitTextProperties::pointSizeChanged); +} + // ************* QQStyleKitControlProperties **************** QQStyleKitControlProperties::QQStyleKitControlProperties(QQSK::PropertyGroup group, QObject *parent) diff --git a/src/labs/stylekit/qqstylekitcontrolproperties_p.h b/src/labs/stylekit/qqstylekitcontrolproperties_p.h index 5bd04c3fd9..5a1cf28120 100644 --- a/src/labs/stylekit/qqstylekitcontrolproperties_p.h +++ b/src/labs/stylekit/qqstylekitcontrolproperties_p.h @@ -103,6 +103,11 @@ public: const QQStyleKitControlProperties *asControlProperties() const; + inline bool isDefined(QQSK::Property property) const + { + return QQStyleKitPropertyResolver::readStyleProperty(this, property).isValid(); + } + private: bool shouldEmitLocally(); bool shouldEmitGlobally(); @@ -472,6 +477,10 @@ class QQStyleKitTextProperties : public QQStyleKitPropertyGroup Q_OBJECT Q_PROPERTY(QColor color READ color WRITE setColor NOTIFY colorChanged FINAL) Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged FINAL) + Q_PROPERTY(bool bold READ bold WRITE setBold NOTIFY boldChanged FINAL) + Q_PROPERTY(bool italic READ italic WRITE setItalic NOTIFY italicChanged FINAL) + Q_PROPERTY(qreal pointSize READ pointSize WRITE setPointSize NOTIFY pointSizeChanged FINAL) + QML_UNCREATABLE("This component can only be instantiated by StyleKit") QML_NAMED_ELEMENT(StyleKitTextProperties) @@ -487,9 +496,21 @@ public: Qt::Alignment alignment() const; void setAlignment(Qt::Alignment alignment); + bool bold() const; + void setBold(bool bold); + + bool italic() const; + void setItalic(bool italic); + + qreal pointSize() const; + void setPointSize(qreal pointSize); + signals: void colorChanged(); void alignmentChanged(); + void boldChanged(); + void italicChanged(); + void pointSizeChanged(); }; /************* QQStyleKitControlProperties **************** diff --git a/src/labs/stylekit/qqstylekitglobal_p.h b/src/labs/stylekit/qqstylekitglobal_p.h index 5fb7ad5f94..165a8c403f 100644 --- a/src/labs/stylekit/qqstylekitglobal_p.h +++ b/src/labs/stylekit/qqstylekitglobal_p.h @@ -102,6 +102,9 @@ public: Width, Blur, Alignment, + Bold, + Italic, + PointSize, COUNT }; Q_ENUM(Property) diff --git a/src/labs/stylekit/qqstylekitreader.cpp b/src/labs/stylekit/qqstylekitreader.cpp index 71ea689377..690e9f96dd 100644 --- a/src/labs/stylekit/qqstylekitreader.cpp +++ b/src/labs/stylekit/qqstylekitreader.cpp @@ -18,6 +18,22 @@ using namespace Qt::StringLiterals; static const QString kAlternate1 = "A1"_L1; static const QString kAlternate2 = "A2"_L1; +static QFont resolvedFontWithOverrides(const QQStyleKitReader *reader, const QFont &baseFont) +{ + Q_ASSERT(reader); + QFont font = baseFont; + const QQStyleKitTextProperties *textProps = reader->global()->text(); + if (!textProps) + return font; + if (textProps->isDefined(QQSK::Property::Bold)) + font.setBold(textProps->styleProperty<bool>(QQSK::Property::Bold)); + if (textProps->isDefined(QQSK::Property::Italic)) + font.setItalic(textProps->styleProperty<bool>(QQSK::Property::Italic)); + if (textProps->isDefined(QQSK::Property::PointSize)) + font.setPointSizeF(textProps->styleProperty<qreal>(QQSK::Property::PointSize)); + return font; +} + QList<QQStyleKitReader *> QQStyleKitReader::s_allReaders; QMap<QString, QQmlComponent *> QQStyleKitReader::s_propertyChangesComponents; @@ -81,6 +97,9 @@ QQmlComponent *QQStyleKitReader::createControlChangesComponent() const bottomPadding: global.bottomPadding text.color: global.text.color text.alignment: global.text.alignment + text.bold: global.text.bold + text.italic: global.text.italic + text.pointSize: global.text.pointSize } )"); @@ -244,7 +263,7 @@ void QQStyleKitReader::updateControl() Q_UNREACHABLE(); } - setFont(style->fontForReader(this)); + setFont(resolvedFontWithOverrides(this, style->fontForReader(this))); } void QQStyleKitReader::resetAll() @@ -263,7 +282,7 @@ void QQStyleKitReader::updateFontFromTheme() if (!style || !style->loaded()) return; - setFont(style->fontForReader(this)); + setFont(resolvedFontWithOverrides(this, style->fontForReader(this))); } void QQStyleKitReader::populateLocalStorage() |
