]> cloud.milkyroute.net Git - dolphin.git/blob - src/search/chip.cpp
SVN_SILENT made messages (.desktop file) - always resolve ours
[dolphin.git] / src / search / chip.cpp
1 /*
2 SPDX-FileCopyrightText: 2025 Felix Ernst <felixernst@kde.org>
3
4 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5 */
6
7 #include "chip.h"
8
9 #include <KColorUtils>
10 #include <KLocalizedString>
11 #include <QPaintEvent>
12 #include <QStylePainter>
13 #include <QToolButton>
14
15 using namespace Search;
16
17 ChipBase::ChipBase(std::shared_ptr<const DolphinQuery> dolphinQuery, QWidget *parent)
18 : QWidget{parent}
19 , UpdatableStateInterface{dolphinQuery}
20 {
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);
26
27 auto layout = new QHBoxLayout{this};
28 layout->setContentsMargins(0, 0, 0, 0);
29 layout->setSpacing(0);
30 }
31
32 void ChipBase::paintEvent(QPaintEvent *event)
33 {
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());
47 painter.setPen(pen);
48 painter.drawRoundedRect(rect, 5, 5); // 5 is the current default Breeze corner radius
49 QWidget::paintEvent(event);
50 }
51
52 #include "moc_chip.cpp"