From 245c0499574c1a31f513f038f425961c78d14be5 Mon Sep 17 00:00:00 2001 From: Whale107 <72391936+Whale107@users.noreply.github.com> Date: Thu, 15 Aug 2024 11:37:21 +0800 Subject: [PATCH] fix: adjust indeterminateprogressbar color (#597) adjust indeterminateprogressbar color Log: --- src/widgets/dindeterminateprogressbar.cpp | 28 +++++++++++++---------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/widgets/dindeterminateprogressbar.cpp b/src/widgets/dindeterminateprogressbar.cpp index eb8341754..e0d04d4dc 100644 --- a/src/widgets/dindeterminateprogressbar.cpp +++ b/src/widgets/dindeterminateprogressbar.cpp @@ -5,6 +5,7 @@ #include "private/dindeterminateprogressbar_p.h" #include +#include #include #include @@ -12,6 +13,8 @@ #include #include +DGUI_USE_NAMESPACE + const int SPOT_WIDGET_WIDTH = 200; DIndeterminateProgressbarPrivate::DIndeterminateProgressbarPrivate(DIndeterminateProgressbar *qq) @@ -82,26 +85,31 @@ void DIndeterminateProgressbar::paintEvent(QPaintEvent *e) ? radius = height() / 2 : radius = DTK_WIDGET_NAMESPACE::DStyle::pixelMetric(style(), DTK_WIDGET_NAMESPACE::DStyle::PM_FrameRadius); - p.setBrush(QColor(0, 0, 0, int(0.1 * 255))); + bool isDarkType = DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::DarkType; + QColor color = isDarkType ? QColor(255, 255, 255, int(0.1 * 255)) : QColor(0, 0, 0, int(0.1 * 255)); + p.setBrush(color); p.setPen(Qt::NoPen); p.drawRoundedRect(rect(), radius, radius); QPen pen; pen.setWidth(1); - pen.setColor(QColor(0, 0, 0, int(0.2 * 255))); + pen.setColor(color); p.setBrush(Qt::NoBrush); p.setPen(pen); - p.drawRoundedRect(rect().marginsRemoved(QMargins(1, 1, 1, 1)), radius, radius); + p.drawRoundedRect(rect(), radius, radius); p.setPen(Qt::NoPen); p.setBrush(palette().highlight().color()); p.drawRoundedRect(d->m_sliderWidget->geometry(), radius, radius); - pen.setColor(QColor(0, 0, 0, int(0.3 * 255))); + QColor highLightColor(palette().highlight().color()); + auto borderColor = isDarkType ? DGuiApplicationHelper::adjustColor(highLightColor, 0, 0, +10, 0, 0, 0, 0) + : DGuiApplicationHelper::adjustColor(highLightColor, 0, 0, -20, 0, 0, 0, -20); + pen.setColor(borderColor); p.setBrush(Qt::NoBrush); p.setPen(pen); - p.drawRoundedRect(d->m_sliderWidget->geometry().marginsRemoved(QMargins(1, 1, 1, 1)), radius, radius); + p.drawRoundedRect(d->m_sliderWidget->geometry(), radius, radius); if (d->m_sliderWidget->width() < d->m_spotWidget->width() / 2) return; @@ -109,15 +117,11 @@ void DIndeterminateProgressbar::paintEvent(QPaintEvent *e) QPointF pointStart(d->m_spotWidget->geometry().left(), d->m_spotWidget->geometry().center().y()); QPointF pointEnd(d->m_spotWidget->geometry().right(), d->m_spotWidget->geometry().center().y()); - QColor shadowColor(0, 0, 0, int(0.15 * 255)); - QColor spotColor(255, 255, 255, int(0.5 * 255)); - QColor highLightColor(palette().highlight().color()); + QColor spotColor = DGuiApplicationHelper::adjustColor(highLightColor, 0, +30, +30, 0, 0, 0, 0); QLinearGradient linear(pointStart, pointEnd); linear.setColorAt(0, highLightColor); - linear.setColorAt(0.35, shadowColor); linear.setColorAt(0.5, spotColor); - linear.setColorAt(0.65, shadowColor); linear.setColorAt(1, highLightColor); linear.setSpread(QGradient::PadSpread); linear.setInterpolationMode(QLinearGradient::InterpolationMode::ColorInterpolation); @@ -126,9 +130,9 @@ void DIndeterminateProgressbar::paintEvent(QPaintEvent *e) p.setPen(Qt::NoPen); QPainterPath clipPath; - clipPath.addRoundedRect(d->m_sliderWidget->geometry(), radius, radius); + clipPath.addRoundedRect(d->m_sliderWidget->geometry().marginsRemoved(QMargins(1, 1, 1, 1)), radius - 1, radius - 1); p.setClipPath(clipPath); p.setClipping(true); - p.drawRoundedRect(d->m_spotWidget->geometry().marginsRemoved(QMargins(2, 2, 2, 2)), radius, radius); + p.drawRoundedRect(d->m_spotWidget->geometry(), radius, radius); p.setClipping(false); }