diff options
Diffstat (limited to 'Swift/QtUI/EventViewer/TwoLineDelegate.cpp')
-rw-r--r-- | Swift/QtUI/EventViewer/TwoLineDelegate.cpp | 87 |
1 files changed, 46 insertions, 41 deletions
diff --git a/Swift/QtUI/EventViewer/TwoLineDelegate.cpp b/Swift/QtUI/EventViewer/TwoLineDelegate.cpp index 08491b9..5ba24ec 100644 --- a/Swift/QtUI/EventViewer/TwoLineDelegate.cpp +++ b/Swift/QtUI/EventViewer/TwoLineDelegate.cpp @@ -1,20 +1,25 @@ /* - * Copyright (c) 2010 Kevin Smith - * Licensed under the GNU General Public License v3. - * See Documentation/Licenses/GPLv3.txt for more information. + * Copyright (c) 2010-2016 Isode Limited. + * All rights reserved. + * See the COPYING file for more information. */ -#include "TwoLineDelegate.h" +#include <Swift/QtUI/EventViewer/TwoLineDelegate.h> -#include <QPen> +#include <QColor> #include <QPainter> -#include <QDebug> +#include <QPen> namespace Swift { + +namespace { + const QColor secondLineColor = QColor(160,160,160); +} + TwoLineDelegate::TwoLineDelegate(int firstRole, int secondRole, bool wrap) { - firstRole_ = firstRole; - secondRole_ = secondRole; - wrap_ = wrap; + firstRole_ = firstRole; + secondRole_ = secondRole; + wrap_ = wrap; } TwoLineDelegate::~TwoLineDelegate() { @@ -22,41 +27,41 @@ TwoLineDelegate::~TwoLineDelegate() { } QSize TwoLineDelegate::sizeHint(const QStyleOptionViewItem& /*option*/, QtEvent* /*event*/ ) const { - QFontMetrics nameMetrics(common_.nameFont); - QFontMetrics statusMetrics(common_.detailFont); - int sizeByText = 2 * common_.verticalMargin + nameMetrics.height() + statusMetrics.height(); - return QSize(150, sizeByText); + QFontMetrics nameMetrics(common_.nameFont); + QFontMetrics statusMetrics(common_.detailFont); + int sizeByText = 2 * common_.verticalMargin + nameMetrics.height() + statusMetrics.height(); + return QSize(150, sizeByText); } void TwoLineDelegate::paint(QPainter* painter, const QStyleOptionViewItem& option, QtEvent* event) const { - painter->save(); - QRect fullRegion(option.rect); - if ( option.state & QStyle::State_Selected ) { - painter->fillRect(fullRegion, option.palette.highlight()); - painter->setPen(option.palette.highlightedText().color()); - } else { - QColor nameColor = event->data(Qt::TextColorRole).value<QColor>(); - painter->setPen(QPen(nameColor)); - } - - QFontMetrics nameMetrics(common_.nameFont); - painter->setFont(common_.nameFont); - int extraFontWidth = nameMetrics.width("H"); - int leftOffset = common_.horizontalMargin * 2 + extraFontWidth / 2; - QRect textRegion(fullRegion.adjusted(leftOffset, 0, 0, 0)); - - int nameHeight = nameMetrics.height() + common_.verticalMargin; - QRect nameRegion(textRegion.adjusted(0, common_.verticalMargin, 0, 0)); - - DelegateCommons::drawElidedText(painter, nameRegion, event->data(firstRole_).toString()); - - painter->setFont(common_.detailFont); - painter->setPen(QPen(QColor(160,160,160))); - - QRect detailRegion(textRegion.adjusted(0, nameHeight, 0, 0)); - DelegateCommons::drawElidedText(painter, detailRegion, event->data(secondRole_).toString()); - - painter->restore(); + painter->save(); + QRect fullRegion(option.rect); + if ( option.state & QStyle::State_Selected ) { + painter->fillRect(fullRegion, option.palette.highlight()); + painter->setPen(option.palette.highlightedText().color()); + } else { + QColor nameColor = event->data(Qt::TextColorRole).value<QColor>(); + painter->setPen(QPen(nameColor)); + } + + QFontMetrics nameMetrics(common_.nameFont); + painter->setFont(common_.nameFont); + int extraFontWidth = nameMetrics.width("H"); + int leftOffset = common_.horizontalMargin * 2 + extraFontWidth / 2; + QRect textRegion(fullRegion.adjusted(leftOffset, 0, 0, 0)); + + int nameHeight = nameMetrics.height() + common_.verticalMargin; + QRect nameRegion(textRegion.adjusted(0, common_.verticalMargin, 0, 0)); + + DelegateCommons::drawElidedText(painter, nameRegion, event->data(firstRole_).toString()); + + painter->setFont(common_.detailFont); + painter->setPen(QPen(secondLineColor)); + + QRect detailRegion(textRegion.adjusted(0, nameHeight, 0, 0)); + DelegateCommons::drawElidedText(painter, detailRegion, event->data(secondRole_).toString()); + + painter->restore(); } } |