]> git.cworth.org Git - apitrace/blobdiff - gui/apicalldelegate.cpp
Removed unused copy of thumbnails.
[apitrace] / gui / apicalldelegate.cpp
index 4eb542be2171bce1c410da3397fb8eb7592356c1..c68717580ddc6e5e5d94f3b95eb9fd27b8d6cf45 100644 (file)
@@ -11,7 +11,9 @@
 
 ApiCallDelegate::ApiCallDelegate(QWidget *parent)
     : QStyledItemDelegate(parent),
-      m_stateEmblem(":/resources/dialog-information.png")
+      m_stateEmblem(":/resources/dialog-information.png"),
+      m_editEmblem(":/resources/document-edit.png"),
+      m_errorEmblem(":/resources/script-error.png")
 {
 }
 
@@ -25,17 +27,45 @@ void ApiCallDelegate::paint(QPainter *painter,
     Q_ASSERT(index.column() == 0);
 
     if (event) {
-        QPoint offset;
+        QPoint offset = QPoint(0, 0);
         QStaticText text = event->staticText();
         //text.setTextWidth(option.rect.width());
         //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());
+
+        // draw thumbnail of frame
+        if(event->type() == ApiTraceEvent::Frame) {
+            ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(event);
+            const QImage & thumbnail = frame->thumbnail();
+            if (!thumbnail.isNull()) {
+                painter->drawImage(option.rect.topLeft() + offset, thumbnail);
+                offset += QPoint(option.rect.height() + 16, 0);
+            }
+        }
+
+        if (event->hasState()) {
+            QPixmap px = m_stateEmblem.pixmap(option.rect.height(),
+                                              option.rect.height());
             painter->drawPixmap(option.rect.topLeft(), px);
             offset = QPoint(option.rect.height() + 5, 0);
         }
+        if (event->type() == ApiTraceEvent::Call) {
+            ApiTraceCall *call = static_cast<ApiTraceCall*>(event);
+            if (call->hasError()) {
+                QPixmap px = m_errorEmblem.pixmap(option.rect.height(),
+                                                  option.rect.height());
+                painter->drawPixmap(option.rect.topLeft() + offset, px);
+                offset += QPoint(option.rect.height() + 5, 0);
+            }
+            if (call->edited()) {
+                QPixmap px = m_editEmblem.pixmap(option.rect.height(),
+                                                 option.rect.height());
+                painter->drawPixmap(option.rect.topLeft() + offset, px);
+                offset += QPoint(option.rect.height() + 5, 0);
+            }
+        }
+
         painter->drawStaticText(option.rect.topLeft() + offset, text);
     } else {
         QStyledItemDelegate::paint(painter, option, index);
@@ -48,7 +78,10 @@ QSize ApiCallDelegate::sizeHint(const QStyleOptionViewItem &option,
     ApiTraceEvent *event =
         index.data(ApiTraceModel::EventRole).value<ApiTraceEvent*>();
 
+#ifndef __APPLE__
+    /* XXX: This fails on MacOSX, but seems safe to ignore */
     Q_ASSERT(index.column() == 0);
+#endif
 
     if (event) {
         QStaticText text = event->staticText();