]>
cloud.milkyroute.net Git - dolphin.git/blob - src/search/chip.cpp
2 SPDX-FileCopyrightText: 2025 Felix Ernst <felixernst@kde.org>
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
10 #include <KLocalizedString>
11 #include <QPaintEvent>
12 #include <QStylePainter>
13 #include <QToolButton>
15 using namespace Search
;
17 ChipBase::ChipBase(std::shared_ptr
<const DolphinQuery
> dolphinQuery
, QWidget
*parent
)
19 , UpdatableStateInterface
{dolphinQuery
}
21 m_removeButton
= new QToolButton
{this};
22 m_removeButton
->setText(i18nc("@action:button", "Remove Filter"));
23 m_removeButton
->setIcon(QIcon::fromTheme("list-remove"));
24 m_removeButton
->setToolButtonStyle(Qt::ToolButtonIconOnly
);
25 m_removeButton
->setAutoRaise(true);
27 auto layout
= new QHBoxLayout
{this};
28 layout
->setContentsMargins(0, 0, 0, 0);
29 layout
->setSpacing(0);
32 void ChipBase::paintEvent(QPaintEvent
*event
)
34 QStylePainter
painter(this);
35 painter
.setRenderHint(QPainter::Antialiasing
);
36 QColor penColor
= KColorUtils::mix(palette().base().color(), palette().text().color(), 0.3);
37 // QPainter is bad at drawing lines that are exactly 1px.
38 // Using QPen::setCosmetic(true) with a 1px pen width
39 // doesn't look quite as good as just using 1.001px.
40 qreal penWidth
= 1.001;
41 qreal penMargin
= penWidth
/ 2;
42 QPen
pen(penColor
, penWidth
);
43 pen
.setCosmetic(true);
44 QRectF rect
= event
->rect();
45 rect
.adjust(penMargin
, penMargin
, -penMargin
, -penMargin
);
46 painter
.setBrush(palette().base());
48 painter
.drawRoundedRect(rect
, 5, 5); // 5 is the current default Breeze corner radius
49 QWidget::paintEvent(event
);
52 #include "moc_chip.cpp"