blob: c2a1b23f54f47172fcc59885989011b2c68c7d58 [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),
Zack Rusin9af5bff2011-04-18 01:05:50 -040014 m_stateEmblem(":/resources/dialog-information.png"),
15 m_editEmblem(":/resources/document-edit.png")
Zack Rusin18eade52011-03-26 14:23:35 -040016{
17}
18
Zack Rusinf6667d12011-03-30 11:03:37 -040019void ApiCallDelegate::paint(QPainter *painter,
20 const QStyleOptionViewItem &option,
Zack Rusin18eade52011-03-26 14:23:35 -040021 const QModelIndex &index) const
22{
Zack Rusinc1acc7f2011-04-02 01:34:04 -040023 QVariant var = index.data(ApiTraceModel::EventRole);
24 ApiTraceEvent *event = var.value<ApiTraceEvent*>();
25
26 Q_ASSERT(index.column() == 0);
27
28 if (event) {
29 QPoint offset;
30 QStaticText text = event->staticText();
Zack Rusin18eade52011-03-26 14:23:35 -040031 //text.setTextWidth(option.rect.width());
Zack Rusinc1acc7f2011-04-02 01:34:04 -040032 //QStyledItemDelegate::paint(painter, option, index);
33 QStyle *style = QApplication::style();
34 style->drawControl(QStyle::CE_ItemViewItem, &option, painter, 0);
35 if (!event->state().isEmpty()) {
Zack Rusin9af5bff2011-04-18 01:05:50 -040036 QPixmap px = m_stateEmblem.pixmap(option.rect.height(),
37 option.rect.height());
Zack Rusinc1acc7f2011-04-02 01:34:04 -040038 painter->drawPixmap(option.rect.topLeft(), px);
39 offset = QPoint(option.rect.height() + 5, 0);
Zack Rusinf6667d12011-03-30 11:03:37 -040040 }
Zack Rusin9af5bff2011-04-18 01:05:50 -040041 if (event->type() == ApiTraceEvent::Call) {
42 ApiTraceCall *call = static_cast<ApiTraceCall*>(event);
43 if (call->edited()) {
44 QPixmap px = m_editEmblem.pixmap(option.rect.height(),
45 option.rect.height());
46 painter->drawPixmap(option.rect.topLeft() + offset, px);
47 offset += QPoint(option.rect.height() + 5, 0);
48 }
49 }
50
Zack Rusinc1acc7f2011-04-02 01:34:04 -040051 painter->drawStaticText(option.rect.topLeft() + offset, text);
52 } else {
53 QStyledItemDelegate::paint(painter, option, index);
Zack Rusin18eade52011-03-26 14:23:35 -040054 }
55}
56
57QSize ApiCallDelegate::sizeHint(const QStyleOptionViewItem &option,
58 const QModelIndex &index) const
59{
Zack Rusinc1acc7f2011-04-02 01:34:04 -040060 ApiTraceEvent *event =
61 index.data(ApiTraceModel::EventRole).value<ApiTraceEvent*>();
62
63 Q_ASSERT(index.column() == 0);
64
65 if (event) {
66 QStaticText text = event->staticText();
Zack Rusin18eade52011-03-26 14:23:35 -040067 //text.setTextWidth(option.rect.width());
Zack Rusinc1acc7f2011-04-02 01:34:04 -040068 //qDebug()<<"text size = "<<text.size();
Zack Rusin18eade52011-03-26 14:23:35 -040069 return text.size().toSize();
Zack Rusin18eade52011-03-26 14:23:35 -040070 }
71 return QStyledItemDelegate::sizeHint(option, index);
72}
73
74
75#include "apicalldelegate.moc"