File indexing completed on 2024-04-21 05:41:00

0001 /*
0002     SPDX-FileCopyrightText: 2011 Vishesh Yadav <vishesh3y@gmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "commititemdelegate.h"
0008 
0009 #include <QPainter>
0010 #include <QFontMetrics>
0011 
0012 CommitItemDelegate::CommitItemDelegate(QObject *parent) :
0013     QItemDelegate(parent)
0014 {
0015 }
0016 
0017 void CommitItemDelegate::paint(QPainter *painter,
0018                           const QStyleOptionViewItem &option,
0019                           const QModelIndex &index) const
0020 {
0021     QString changeset = index.data(Qt::DisplayRole).toString();
0022     QString revision = index.data(Qt::UserRole + 1).toString();
0023     QString branch = index.data(Qt::UserRole + 2).toString();
0024     QString authorName = index.data(Qt::UserRole + 3).toString();
0025     QString commitLog = index.data(Qt::UserRole + 4).toString();
0026 
0027     if (option.state & QStyle::State_Selected) {
0028         painter->fillRect(option.rect, option.palette.color(QPalette::Highlight));
0029     }
0030 
0031     QFont font = option.font;
0032     QFontMetrics fm(font);
0033     QRect rect = option.rect.adjusted(4, 4, 4, 4);
0034 
0035     QString top;
0036     if (!revision.isEmpty()) {
0037         top = QStringLiteral("%1:").arg(revision);
0038     }
0039     top += changeset;
0040 
0041     if (!branch.isEmpty()) {
0042         top += QStringLiteral(" (%1)").arg(branch);
0043     }
0044     font.setBold(true);
0045     painter->setFont(font);
0046     painter->drawText(rect, Qt::AlignLeft, top);
0047 
0048     font.setPixelSize(0.60f * static_cast<float>(fm.height()));
0049     font.setBold(false);
0050     painter->setFont(font);
0051     rect = rect.adjusted(0, fm.height(), 0, fm.height());
0052     painter->drawText(rect, Qt::AlignLeft, authorName, &rect);
0053 
0054     int fs = 0.60f * static_cast<float>(fm.height());
0055     font.setPixelSize(fs);
0056     font.setBold(false);
0057     painter->setFont(font);
0058     rect = rect.adjusted(0, fs+4, 0, fs+4);
0059     painter->drawText(rect, Qt::AlignLeft, commitLog, &rect);
0060 }
0061 
0062 
0063 QSize CommitItemDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const
0064 {
0065     QSize size = QItemDelegate::sizeHint(option, index);
0066     QFont font = option.font;
0067     font.setBold(true);
0068     QFontMetrics fm(font);
0069     int height = static_cast<float>(option.fontMetrics.height()) * (1.2f) + fm.height() + 15;
0070     size.setHeight(height);
0071 
0072     return size;
0073 }
0074 
0075 
0076 
0077 
0078 #include "moc_commititemdelegate.cpp"