aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/controls
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@qt.io>2017-05-11 12:48:55 +0200
committerJ-P Nurmi <jpnurmi@qt.io>2017-05-12 07:54:34 +0000
commit08dc547c859d6446d4bb589b50e0feccbffc7c9f (patch)
treee94235acea80d81d33cff1817ca6e7f4c8e73b25 /src/imports/controls
parent910f9d6930fdd739e9490fa491986d74b6a57975 (diff)
Default: pass busy indicator and progress bar colors from QML
Default.textColor (also used in eg. RangeSlider to fill the range) is equal to the color that was previously hard-coded in qquickdefaultbusyindicator.cpp and qquickdefaultprogressbar.cpp. Change-Id: I8f0749862def31667b6ef2ab3b4c6ea71a590755 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/imports/controls')
-rw-r--r--src/imports/controls/BusyIndicator.qml1
-rw-r--r--src/imports/controls/ProgressBar.qml1
-rw-r--r--src/imports/controls/plugins.qmltypes2
-rw-r--r--src/imports/controls/qquickdefaultbusyindicator.cpp21
-rw-r--r--src/imports/controls/qquickdefaultbusyindicator_p.h5
-rw-r--r--src/imports/controls/qquickdefaultprogressbar.cpp19
-rw-r--r--src/imports/controls/qquickdefaultprogressbar_p.h5
7 files changed, 49 insertions, 5 deletions
diff --git a/src/imports/controls/BusyIndicator.qml b/src/imports/controls/BusyIndicator.qml
index a645e45e..5690c71f 100644
--- a/src/imports/controls/BusyIndicator.qml
+++ b/src/imports/controls/BusyIndicator.qml
@@ -51,6 +51,7 @@ T.BusyIndicator {
implicitWidth: 48
implicitHeight: 48
+ color: Default.textColor
opacity: control.running ? 1 : 0
visible: control.running || animator.running
Behavior on opacity { OpacityAnimator { id: animator; duration: 250 } }
diff --git a/src/imports/controls/ProgressBar.qml b/src/imports/controls/ProgressBar.qml
index 3edc24fa..78778c72 100644
--- a/src/imports/controls/ProgressBar.qml
+++ b/src/imports/controls/ProgressBar.qml
@@ -53,6 +53,7 @@ T.ProgressBar {
scale: control.mirrored ? -1 : 1
progress: control.position
indeterminate: control.visible && control.indeterminate
+ color: Default.textColor
}
background: Rectangle {
diff --git a/src/imports/controls/plugins.qmltypes b/src/imports/controls/plugins.qmltypes
index 13d54abe..fee7c934 100644
--- a/src/imports/controls/plugins.qmltypes
+++ b/src/imports/controls/plugins.qmltypes
@@ -40,6 +40,7 @@ Module {
prototype: "QQuickItem"
exports: ["QtQuick.Controls.impl/BusyIndicatorImpl 2.0"]
exportMetaObjectRevisions: [0]
+ Property { name: "color"; type: "QColor" }
}
Component {
name: "QQuickDefaultDial"
@@ -58,6 +59,7 @@ Module {
exportMetaObjectRevisions: [0]
Property { name: "indeterminate"; type: "bool" }
Property { name: "progress"; type: "double" }
+ Property { name: "color"; type: "QColor" }
}
Component {
name: "QQuickDefaultStyle"
diff --git a/src/imports/controls/qquickdefaultbusyindicator.cpp b/src/imports/controls/qquickdefaultbusyindicator.cpp
index 315b2b8b..36f3a538 100644
--- a/src/imports/controls/qquickdefaultbusyindicator.cpp
+++ b/src/imports/controls/qquickdefaultbusyindicator.cpp
@@ -45,7 +45,6 @@ QT_BEGIN_NAMESPACE
static const int CircleCount = 10;
static const int TotalDuration = 100 * CircleCount * 2;
static const QRgb TransparentColor = 0x00000000;
-static const QRgb FillColor = 0xFF353637;
static QPointF moveCircle(const QPointF &pos, qreal rotation, qreal distance)
{
@@ -59,6 +58,9 @@ public:
void updateCurrentTime(int time) override;
void sync(QQuickItem *item) override;
+
+private:
+ QColor m_color;
};
QQuickDefaultBusyIndicatorNode::QQuickDefaultBusyIndicatorNode(QQuickDefaultBusyIndicator *item)
@@ -92,7 +94,7 @@ void QQuickDefaultBusyIndicatorNode::updateCurrentTime(int time)
Q_ASSERT(rectNode->type() == QSGNode::GeometryNodeType);
const bool fill = (firstPhaseProgress > qreal(i) / CircleCount) || (secondPhaseProgress > 0 && secondPhaseProgress < qreal(i) / CircleCount);
- rectNode->setColor(QColor::fromRgba(fill ? FillColor : TransparentColor));
+ rectNode->setColor(fill ? m_color : QColor::fromRgba(TransparentColor));
rectNode->setPenWidth(fill ? 0 : 1);
rectNode->update();
@@ -108,6 +110,7 @@ void QQuickDefaultBusyIndicatorNode::sync(QQuickItem *item)
const qreal dx = (w - sz) / 2;
const qreal dy = (h - sz) / 2;
const int circleRadius = sz / 12;
+ m_color = static_cast<QQuickDefaultBusyIndicator *>(item)->color();
QSGTransformNode *transformNode = static_cast<QSGTransformNode *>(firstChild());
for (int i = 0; i < CircleCount; ++i) {
@@ -136,6 +139,20 @@ QQuickDefaultBusyIndicator::QQuickDefaultBusyIndicator(QQuickItem *parent) :
setFlag(ItemHasContents);
}
+QColor QQuickDefaultBusyIndicator::color() const
+{
+ return m_color;
+}
+
+void QQuickDefaultBusyIndicator::setColor(const QColor &color)
+{
+ if (color == m_color)
+ return;
+
+ m_color = color;
+ update();
+}
+
int QQuickDefaultBusyIndicator::elapsed() const
{
return m_elapsed;
diff --git a/src/imports/controls/qquickdefaultbusyindicator_p.h b/src/imports/controls/qquickdefaultbusyindicator_p.h
index 7daeabd1..3bbd6c31 100644
--- a/src/imports/controls/qquickdefaultbusyindicator_p.h
+++ b/src/imports/controls/qquickdefaultbusyindicator_p.h
@@ -55,10 +55,14 @@ QT_BEGIN_NAMESPACE
class QQuickDefaultBusyIndicator : public QQuickItem
{
Q_OBJECT
+ Q_PROPERTY(QColor color READ color WRITE setColor FINAL)
public:
explicit QQuickDefaultBusyIndicator(QQuickItem *parent = nullptr);
+ QColor color() const;
+ void setColor(const QColor &color);
+
int elapsed() const;
protected:
@@ -67,6 +71,7 @@ protected:
private:
int m_elapsed;
+ QColor m_color;
};
QT_END_NAMESPACE
diff --git a/src/imports/controls/qquickdefaultprogressbar.cpp b/src/imports/controls/qquickdefaultprogressbar.cpp
index 655cf518..f5bd1db8 100644
--- a/src/imports/controls/qquickdefaultprogressbar.cpp
+++ b/src/imports/controls/qquickdefaultprogressbar.cpp
@@ -51,7 +51,6 @@ static const int BlockSpan = Blocks * (BlockWidth + BlockRestingSpacing) - Block
static const int TotalDuration = 4000;
static const int SecondPhaseStart = TotalDuration * 0.4;
static const int ThirdPhaseStart = TotalDuration * 0.6;
-static const QRgb FillColor = 0x353637;
static inline qreal blockStartX(int blockIndex)
{
@@ -178,7 +177,7 @@ void QQuickDefaultProgressBarNode::sync(QQuickItem *item)
QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode*>(transformNode->firstChild());
if (!rectNode) {
rectNode = d->sceneGraphContext()->createInternalRectangleNode();
- rectNode->setColor(FillColor);
+ rectNode->setColor(bar->color());
transformNode->appendChildNode(rectNode);
}
@@ -200,7 +199,7 @@ void QQuickDefaultProgressBarNode::sync(QQuickItem *item)
QSGInternalRectangleNode *rectNode = static_cast<QSGInternalRectangleNode *>(firstChild());
if (!rectNode) {
rectNode = d->sceneGraphContext()->createInternalRectangleNode();
- rectNode->setColor(FillColor);
+ rectNode->setColor(bar->color());
appendChildNode(rectNode);
}
@@ -246,6 +245,20 @@ void QQuickDefaultProgressBar::setIndeterminate(bool indeterminate)
update();
}
+QColor QQuickDefaultProgressBar::color() const
+{
+ return m_color;
+}
+
+void QQuickDefaultProgressBar::setColor(const QColor &color)
+{
+ if (color == m_color)
+ return;
+
+ m_color = color;
+ update();
+}
+
void QQuickDefaultProgressBar::itemChange(QQuickItem::ItemChange change, const QQuickItem::ItemChangeData &data)
{
QQuickItem::itemChange(change, data);
diff --git a/src/imports/controls/qquickdefaultprogressbar_p.h b/src/imports/controls/qquickdefaultprogressbar_p.h
index a922c07f..dbdf5ad4 100644
--- a/src/imports/controls/qquickdefaultprogressbar_p.h
+++ b/src/imports/controls/qquickdefaultprogressbar_p.h
@@ -57,6 +57,7 @@ class QQuickDefaultProgressBar : public QQuickItem
Q_OBJECT
Q_PROPERTY(bool indeterminate READ isIndeterminate WRITE setIndeterminate FINAL)
Q_PROPERTY(qreal progress READ progress WRITE setProgress FINAL)
+ Q_PROPERTY(QColor color READ color WRITE setColor FINAL)
public:
explicit QQuickDefaultProgressBar(QQuickItem *parent = nullptr);
@@ -67,6 +68,9 @@ public:
qreal progress() const;
void setProgress(qreal progress);
+ QColor color() const;
+ void setColor(const QColor &color);
+
protected:
void itemChange(ItemChange change, const ItemChangeData &data) override;
QSGNode *updatePaintNode(QSGNode *oldNode, UpdatePaintNodeData *) override;
@@ -74,6 +78,7 @@ protected:
private:
qreal m_progress;
bool m_indeterminate;
+ QColor m_color;
};
QT_END_NAMESPACE