diff options
| author | Peter Penz <[email protected]> | 2011-10-24 00:22:03 +0200 |
|---|---|---|
| committer | Peter Penz <[email protected]> | 2011-10-24 00:22:27 +0200 |
| commit | 54b5a283765f168575f2eaeff95c93dbeca3d63d (patch) | |
| tree | 2cb153973acbc55ddbcb8be31036e1f124de07ed /src/kitemviews/kfileitemlistgroupheader.cpp | |
| parent | 517ebd721e12e3a4a3430ac3cba8ce99b33c5b0e (diff) | |
Make group-headers less ugly
Diffstat (limited to 'src/kitemviews/kfileitemlistgroupheader.cpp')
| -rw-r--r-- | src/kitemviews/kfileitemlistgroupheader.cpp | 37 |
1 files changed, 34 insertions, 3 deletions
diff --git a/src/kitemviews/kfileitemlistgroupheader.cpp b/src/kitemviews/kfileitemlistgroupheader.cpp index 969bd925b..06d410f28 100644 --- a/src/kitemviews/kfileitemlistgroupheader.cpp +++ b/src/kitemviews/kfileitemlistgroupheader.cpp @@ -25,8 +25,12 @@ #include <QPainter> KFileItemListGroupHeader::KFileItemListGroupHeader(QGraphicsWidget* parent) : - KItemListGroupHeader(parent) + KItemListGroupHeader(parent), + m_font(), + m_text() { + m_text.setTextFormat(Qt::PlainText); + m_text.setPerformanceHint(QStaticText::AggressiveCaching); } KFileItemListGroupHeader::~KFileItemListGroupHeader() @@ -36,8 +40,35 @@ KFileItemListGroupHeader::~KFileItemListGroupHeader() void KFileItemListGroupHeader::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) { KItemListGroupHeader::paint(painter, option, widget); - // TODO: Use dataChanged() hook to prepare a cached property - painter->drawText(QRectF(0, 0, size().width(), size().height()), data().toString()); + + painter->setPen(styleOption().palette.text().color()); + painter->setFont(m_font); + const int margin = styleOption().margin; + painter->drawStaticText(margin * 2, margin, m_text); +} + +void KFileItemListGroupHeader::dataChanged(const QVariant& current, const QVariant& previous) +{ + Q_UNUSED(current); + Q_UNUSED(previous); + updateText(); +} + +void KFileItemListGroupHeader::resizeEvent(QGraphicsSceneResizeEvent* event) +{ + QGraphicsWidget::resizeEvent(event); + updateText(); +} + +void KFileItemListGroupHeader::updateText() +{ + const qreal width = size().width() - 4 * styleOption().margin; + m_font = font(); + m_font.setBold(true); + + QFontMetricsF fontMetrics(m_font); + const QString text = fontMetrics.elidedText(data().toString(), Qt::ElideRight, width); + m_text.setText(text); } #include "kfileitemlistgroupheader.moc" |
