aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/labs/stylekit/qqstylekitcontrolproperties.cpp33
-rw-r--r--src/labs/stylekit/qqstylekitcontrolproperties_p.h21
-rw-r--r--src/labs/stylekit/qqstylekitglobal_p.h3
-rw-r--r--src/labs/stylekit/qqstylekitreader.cpp23
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()