1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
|
/*
itemdelegate.cpp
This file is part of GammaRay, the Qt application inspection and manipulation tool.
SPDX-FileCopyrightText: 2016 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
Author: Filipe Azevedo <filipe.azevedo@kdab.com>
SPDX-License-Identifier: GPL-2.0-or-later
Contact KDAB at <info@kdab.com> for commercial licensing options.
*/
#include "itemdelegate.h"
#include <QApplication>
using namespace GammaRay;
ItemDelegateInterface::ItemDelegateInterface()
: m_placeholderText(ItemDelegate::tr("(Item %r)"))
{
}
ItemDelegateInterface::ItemDelegateInterface(const QString &placeholderText)
: m_placeholderText(placeholderText)
{
}
QString ItemDelegateInterface::placeholderText() const
{
return m_placeholderText;
}
void ItemDelegateInterface::setPlaceholderText(const QString &placeholderText)
{
m_placeholderText = placeholderText;
}
QSet<int> ItemDelegateInterface::placeholderColumns() const
{
return m_placeholderColumns;
}
void ItemDelegateInterface::setPlaceholderColumns(const QSet<int> &placeholderColumns)
{
m_placeholderColumns = placeholderColumns;
}
QString ItemDelegateInterface::defaultDisplayText(const QModelIndex &index) const
{
QString display = index.data().toString();
if (display.isEmpty()
&& (m_placeholderColumns.isEmpty() || m_placeholderColumns.contains(index.column()))) {
display = QString(m_placeholderText)
.replace(QStringLiteral("%r"), QString::number(index.row()))
.replace(QStringLiteral("%c"), QString::number(index.column()));
}
return display;
}
const QWidget *ItemDelegateInterface::widget(const QStyleOptionViewItem &option)
{
const QStyleOptionViewItem &opt(option);
return opt.widget;
}
QStyle *ItemDelegateInterface::style(const QStyleOptionViewItem &option) const
{
const QWidget *widget = this->widget(option);
return widget ? widget->style() : QApplication::style();
}
ItemDelegate::ItemDelegate(QObject *parent)
: QStyledItemDelegate(parent)
, ItemDelegateInterface()
{
}
void ItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option,
const QModelIndex &index) const
{
QStyleOptionViewItem opt = option;
opt.text = defaultDisplayText(index);
initStyleOption(&opt, index);
const QWidget *widget = this->widget(option);
QStyle *style = this->style(option);
style->drawControl(QStyle::CE_ItemViewItem, &opt, painter, widget);
}
|