X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapicalldelegate.cpp;h=4eb542be2171bce1c410da3397fb8eb7592356c1;hb=b65a66efc71835f4f4c6dad8fd0c5c2fa90c74eb;hp=5376c0dcdb3d266a5964ffafb230b0c252945ae0;hpb=f6667d1331849a8534ead1c653ab4a1aeaeddcc8;p=apitrace diff --git a/gui/apicalldelegate.cpp b/gui/apicalldelegate.cpp index 5376c0d..4eb542b 100644 --- a/gui/apicalldelegate.cpp +++ b/gui/apicalldelegate.cpp @@ -1,14 +1,17 @@ #include "apicalldelegate.h" #include "apitracecall.h" +#include "apitracemodel.h" +#include #include #include #include #include ApiCallDelegate::ApiCallDelegate(QWidget *parent) - : QStyledItemDelegate(parent) + : QStyledItemDelegate(parent), + m_stateEmblem(":/resources/dialog-information.png") { } @@ -16,40 +19,42 @@ void ApiCallDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { - ApiTraceCall *call = index.data().value(); - if (call) { - QStaticText text = call->staticText(); + QVariant var = index.data(ApiTraceModel::EventRole); + ApiTraceEvent *event = var.value(); + + Q_ASSERT(index.column() == 0); + + if (event) { + QPoint offset; + QStaticText text = event->staticText(); //text.setTextWidth(option.rect.width()); - QStyledItemDelegate::paint(painter, option, index); - painter->drawStaticText(option.rect.topLeft(), text); - } else { - ApiTraceFrame *frame = index.data().value(); - if (frame) { - QStaticText text = frame->staticText(); - //text.setTextWidth(option.rect.width()); - QStyledItemDelegate::paint(painter, option, index); - painter->drawStaticText(option.rect.topLeft(), text); - } else { - QStyledItemDelegate::paint(painter, option, index); + //QStyledItemDelegate::paint(painter, option, index); + QStyle *style = QApplication::style(); + style->drawControl(QStyle::CE_ItemViewItem, &option, painter, 0); + if (!event->state().isEmpty()) { + QPixmap px = m_stateEmblem.pixmap(option.rect.height(), option.rect.height()); + painter->drawPixmap(option.rect.topLeft(), px); + offset = QPoint(option.rect.height() + 5, 0); } + painter->drawStaticText(option.rect.topLeft() + offset, text); + } else { + QStyledItemDelegate::paint(painter, option, index); } } QSize ApiCallDelegate::sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const { - ApiTraceCall *call = index.data().value(); - if (call) { - QStaticText text = call->staticText(); + ApiTraceEvent *event = + index.data(ApiTraceModel::EventRole).value(); + + Q_ASSERT(index.column() == 0); + + if (event) { + QStaticText text = event->staticText(); //text.setTextWidth(option.rect.width()); + //qDebug()<<"text size = "<(); - if (frame) { - QStaticText text = frame->staticText(); - //text.setTextWidth(option.rect.width()); - return text.size().toSize(); - } } return QStyledItemDelegate::sizeHint(option, index); }