24 #include <QStyleOption>
25 #include <QApplication>
31 #define HORIZONTAL_HINT 3
33 class KCategoryDrawer::Private
64 const QStyleOption &option,
65 QPainter *painter)
const
67 painter->setRenderHint(QPainter::Antialiasing);
70 const QRect optRect = option.rect;
71 QFont font(QApplication::font());
73 const QFontMetrics fontMetrics = QFontMetrics(font);
75 QColor outlineColor = option.palette.text().color();
76 outlineColor.setAlphaF(0.35);
81 painter->setPen(outlineColor);
82 const QPointF topLeft(optRect.topLeft());
83 QRectF arc(topLeft, QSizeF(4, 4));
84 arc.translate(0.5, 0.5);
85 painter->drawArc(arc, 1440, 1440);
92 QPoint start(optRect.topLeft());
94 QPoint verticalGradBottom(optRect.topLeft());
95 verticalGradBottom.ry() += fontMetrics.height() + 5;
96 QLinearGradient gradient(start, verticalGradBottom);
97 gradient.setColorAt(0, outlineColor);
98 gradient.setColorAt(1, Qt::transparent);
99 painter->fillRect(
QRect(start,
QSize(1, fontMetrics.height() + 5)), gradient);
105 QPoint start(optRect.topLeft());
107 QPoint horizontalGradTop(optRect.topLeft());
108 horizontalGradTop.rx() += optRect.width() - 6;
109 painter->fillRect(
QRect(start,
QSize(optRect.width() - 6, 1)), outlineColor);
116 painter->setPen(outlineColor);
117 QPointF topRight(optRect.topRight());
119 QRectF arc(topRight, QSizeF(4, 4));
120 arc.translate(0.5, 0.5);
121 painter->drawArc(arc, 0, 1440);
128 QPoint start(optRect.topRight());
130 QPoint verticalGradBottom(optRect.topRight());
131 verticalGradBottom.ry() += fontMetrics.height() + 5;
132 QLinearGradient gradient(start, verticalGradBottom);
133 gradient.setColorAt(0, outlineColor);
134 gradient.setColorAt(1, Qt::transparent);
135 painter->fillRect(
QRect(start,
QSize(1, fontMetrics.height() + 5)), gradient);
141 QRect textRect(option.rect);
142 textRect.setTop(textRect.top() + 7);
143 textRect.setLeft(textRect.left() + 7);
144 textRect.setHeight(fontMetrics.height());
145 textRect.setRight(textRect.right() - 7);
148 painter->setFont(font);
149 QColor penColor(option.palette.text().color());
150 penColor.setAlphaF(0.6);
151 painter->setPen(penColor);
152 painter->drawText(textRect, Qt::AlignLeft | Qt::AlignVCenter, category);
163 QFont font(QApplication::font());
165 QFontMetrics fontMetrics(font);
167 const int height = fontMetrics.height() + 1
174 return d->leftMargin;
184 return d->rightMargin;
194 d->leftMargin = cd.d->leftMargin;
195 d->rightMargin = cd.d->rightMargin;
229 class KCategoryDrawerV3::Private
246 , d(new Private(view))
284 #include "kcategorydrawer.moc"