blob: 4eb542be2171bce1c410da3397fb8eb7592356c1 [file] [log] [blame]
Zack Rusin18eade52011-03-26 14:23:35 -04001#include "apicalldelegate.h"
2
3#include "apitracecall.h"
Zack Rusinc1acc7f2011-04-02 01:34:04 -04004#include "apitracemodel.h"
Zack Rusin18eade52011-03-26 14:23:35 -04005
Zack Rusinc1acc7f2011-04-02 01:34:04 -04006#include <QApplication>
Zack Rusin18eade52011-03-26 14:23:35 -04007#include <QDebug>
8#include <QPainter>
9#include <QStaticText>
Zack Rusin96130ac2011-03-27 01:48:36 -040010#include <QStyle>
Zack Rusin18eade52011-03-26 14:23:35 -040011
12ApiCallDelegate::ApiCallDelegate(QWidget *parent)
Zack Rusinc1acc7f2011-04-02 01:34:04 -040013 : QStyledItemDelegate(parent),
14 m_stateEmblem(":/resources/dialog-information.png")
Zack Rusin18eade52011-03-26 14:23:35 -040015{
16}
17
Zack Rusinf6667d12011-03-30 11:03:37 -040018void ApiCallDelegate::paint(QPainter *painter,
19 const QStyleOptionViewItem &option,
Zack Rusin18eade52011-03-26 14:23:35 -040020 const QModelIndex &index) const
21{
Zack Rusinc1acc7f2011-04-02 01:34:04 -040022 QVariant var = index.data(ApiTraceModel::EventRole);
23 ApiTraceEvent *event = var.value<ApiTraceEvent*>();
24
25 Q_ASSERT(index.column() == 0);
26
27 if (event) {
28 QPoint offset;
29 QStaticText text = event->staticText();
Zack Rusin18eade52011-03-26 14:23:35 -040030 //text.setTextWidth(option.rect.width());
Zack Rusinc1acc7f2011-04-02 01:34:04 -040031 //QStyledItemDelegate::paint(painter, option, index);
32 QStyle *style = QApplication::style();
33 style->drawControl(QStyle::CE_ItemViewItem, &option, painter, 0);
34 if (!event->state().isEmpty()) {
35 QPixmap px = m_stateEmblem.pixmap(option.rect.height(), option.rect.height());
36 painter->drawPixmap(option.rect.topLeft(), px);
37 offset = QPoint(option.rect.height() + 5, 0);
Zack Rusinf6667d12011-03-30 11:03:37 -040038 }
Zack Rusinc1acc7f2011-04-02 01:34:04 -040039 painter->drawStaticText(option.rect.topLeft() + offset, text);
40 } else {
41 QStyledItemDelegate::paint(painter, option, index);
Zack Rusin18eade52011-03-26 14:23:35 -040042 }
43}
44
45QSize ApiCallDelegate::sizeHint(const QStyleOptionViewItem &option,
46 const QModelIndex &index) const
47{
Zack Rusinc1acc7f2011-04-02 01:34:04 -040048 ApiTraceEvent *event =
49 index.data(ApiTraceModel::EventRole).value<ApiTraceEvent*>();
50
51 Q_ASSERT(index.column() == 0);
52
53 if (event) {
54 QStaticText text = event->staticText();
Zack Rusin18eade52011-03-26 14:23:35 -040055 //text.setTextWidth(option.rect.width());
Zack Rusinc1acc7f2011-04-02 01:34:04 -040056 //qDebug()<<"text size = "<<text.size();
Zack Rusin18eade52011-03-26 14:23:35 -040057 return text.size().toSize();
Zack Rusin18eade52011-03-26 14:23:35 -040058 }
59 return QStyledItemDelegate::sizeHint(option, index);
60}
61
62
63#include "apicalldelegate.moc"