- // Calculate the outline color. No alphablending is used for
- // performance reasons.
- const QColor c1 = m_styleOption.palette.text().color();
- const QColor c2 = m_styleOption.palette.background().color();
- const int p1 = 35;
- const int p2 = 100 - p1;
- m_outlineColor = QColor((c1.red() * p1 + c2.red() * p2) / 100,
- (c1.green() * p1 + c2.green() * p2) / 100,
- (c1.blue() * p1 + c2.blue() * p2) / 100);
-
- // The drawing code is based on the code of DolphinCategoryDrawer from Dolphin 1.7
- // Copyright (C) 2007 Rafael Fernández López <ereslibre@kde.org>
- {
- // Cache the left border as pixmap
- QPainter painter(m_leftBorderCache);
- painter.setPen(m_outlineColor);
-
- // 1. Draw top horizontal line
- painter.drawLine(3, 0, length, 0);
-
- // 2. Draw vertical line with gradient
- const QPoint start(0, 3);
- QLinearGradient gradient(start, QPoint(0, length));
- gradient.setColorAt(0, m_outlineColor);
- gradient.setColorAt(1, Qt::transparent);
- painter.fillRect(QRect(start, QSize(1, length - start.y())), gradient);
-
- // 3. Draw arc
- painter.setRenderHint(QPainter::Antialiasing);
- QRectF arc(QPointF(0, 0), QSizeF(4, 4));
- arc.translate(0.5, 0.5);
- painter.drawArc(arc, 1440, 1440);
- }