feat(ui): use system accent color for thumb selections

This commit is contained in:
Travis Abendshien
2024-07-20 09:48:59 -07:00
parent ad53f10ecc
commit 91ee2428ca

View File

@@ -5,7 +5,15 @@
from PySide6 import QtCore
from PySide6.QtCore import QEvent
from PySide6.QtGui import QEnterEvent, QPainter, QColor, QPen, QPainterPath, QPaintEvent
from PySide6.QtGui import (
QEnterEvent,
QPainter,
QColor,
QPen,
QPainterPath,
QPaintEvent,
QPalette,
)
from PySide6.QtWidgets import QWidget
from src.qt.helpers.qbutton_wrapper import QPushButtonWrapper
@@ -17,7 +25,31 @@ class ThumbButton(QPushButtonWrapper):
self.hovered = False
self.selected = False
# self.clicked.connect(lambda checked: self.set_selected(True))
self.select_color: QColor = QPalette.color(
self.palette(),
QPalette.ColorGroup.Active,
QPalette.ColorRole.Accent,
)
self.select_color_faded: QColor = QColor(self.select_color)
self.select_color_faded.setHsl(
self.select_color_faded.hslHue(),
self.select_color_faded.hslSaturation(),
max(self.select_color_faded.lightness(), 127),
127,
)
self.hover_color: QColor = QPalette.color(
self.palette(),
QPalette.ColorGroup.Active,
QPalette.ColorRole.Accent,
)
self.hover_color.setHsl(
self.hover_color.hslHue(),
self.hover_color.hslSaturation(),
min(self.hover_color.lightness() + 80, 255),
self.hover_color.alpha(),
)
def paintEvent(self, event: QPaintEvent) -> None:
super().paintEvent(event)
@@ -25,7 +57,6 @@ class ThumbButton(QPushButtonWrapper):
painter = QPainter()
painter.begin(self)
painter.setRenderHint(QPainter.RenderHint.Antialiasing)
# painter.setCompositionMode(QPainter.CompositionMode.CompositionMode_Source)
path = QPainterPath()
width = 3
radius = 6
@@ -40,27 +71,21 @@ class ThumbButton(QPushButtonWrapper):
radius,
)
# color = QColor('#bb4ff0') if self.selected else QColor('#55bbf6')
# pen = QPen(color, width)
# painter.setPen(pen)
# # brush.setColor(fill)
# painter.drawPath(path)
if self.selected:
painter.setCompositionMode(
QPainter.CompositionMode.CompositionMode_HardLight
)
color = QColor("#bb4ff0")
color.setAlphaF(0.5)
pen = QPen(color, width)
pen = QPen(self.select_color_faded, width)
painter.setPen(pen)
painter.fillPath(path, color)
painter.fillPath(path, self.select_color_faded)
painter.drawPath(path)
painter.setCompositionMode(
QPainter.CompositionMode.CompositionMode_Source
)
color = QColor("#bb4ff0") if not self.hovered else QColor("#55bbf6")
color: QColor = (
self.select_color if not self.hovered else self.hover_color
)
pen = QPen(color, width)
painter.setPen(pen)
painter.drawPath(path)
@@ -68,10 +93,10 @@ class ThumbButton(QPushButtonWrapper):
painter.setCompositionMode(
QPainter.CompositionMode.CompositionMode_Source
)
color = QColor("#55bbf6")
pen = QPen(color, width)
pen = QPen(self.hover_color, width)
painter.setPen(pen)
painter.drawPath(path)
painter.end()
def enterEvent(self, event: QEnterEvent) -> None: