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"