ApiTraceCall *call = static_cast<ApiTraceCall*>(itm);
if (call->state().isEmpty())
return QString::fromLatin1("%1) <b>%2</b>")
- .arg(call->index)
- .arg(call->name);
+ .arg(call->index())
+ .arg(call->name());
else
return QString::fromLatin1("%1) <b>%2</b><br/>%3")
- .arg(call->index)
- .arg(call->name)
+ .arg(call->index())
+ .arg(call->name())
.arg(stateText);
} else {
ApiTraceFrame *frame = static_cast<ApiTraceFrame*>(itm);
ApiTraceEvent *event = item(index);
if (event && event->type() == ApiTraceEvent::Call) {
ApiTraceCall *call = static_cast<ApiTraceCall*>(event);
- Q_ASSERT(call->parentFrame);
- return createIndex(call->parentFrame->number,
- 0, call->parentFrame);
+ Q_ASSERT(call->parentFrame());
+ return createIndex(call->parentFrame()->number,
+ 0, call->parentFrame());
}
return QModelIndex();
}
this, SLOT(invalidateFrames()));
connect(m_trace, SIGNAL(framesAdded(int, int)),
this, SLOT(appendFrames(int, int)));
+ connect(m_trace, SIGNAL(changed(ApiTraceCall*)),
+ this, SLOT(callChanged(ApiTraceCall*)));
}
const ApiTrace * ApiTraceModel::apiTrace() const
if (event->type() == ApiTraceEvent::Call) {
ApiTraceCall *call = static_cast<ApiTraceCall*>(event);
- ApiTraceFrame *frame = call->parentFrame;
+ ApiTraceFrame *frame = call->parentFrame();
int row = frame->calls.indexOf(call);
QModelIndex index = createIndex(row, 0, call);
emit dataChanged(index, index);
QModelIndex ApiTraceModel::callIndex(int callNum) const
{
ApiTraceCall *call = m_trace->callWithIndex(callNum);
+ return indexForCall(call);
+}
+QModelIndex ApiTraceModel::indexForCall(ApiTraceCall *call) const
+{
if (!call) {
- qDebug()<<"couldn't find call at "<<callNum;
return QModelIndex();
}
- ApiTraceFrame *frame = call->parentFrame;
+ ApiTraceFrame *frame = call->parentFrame();
Q_ASSERT(frame);
int row = frame->calls.indexOf(call);
if (row < 0) {
- qDebug() << "Couldn't find call num "<<callNum<<" inside parent!";
+ qDebug() << "Couldn't find call num "<<call->index()<<" inside parent!";
return QModelIndex();
}
return createIndex(row, 0, call);
}
+void ApiTraceModel::callChanged(ApiTraceCall *call)
+{
+ ApiTrace *trace = call->parentFrame()->parentTrace();
+
+ Q_ASSERT(trace);
+ trace->save();
+
+#if 0
+ qDebug()<<"Call changed = "<<call->edited();
+ qDebug()<<"\ttrace edited = "<<trace->edited();
+ qDebug()<<"\ttrace file = "<<trace->fileName();
+ qDebug()<<"\ttrace needs saving = "<<trace->needsSaving();
+#endif
+
+ ApiTraceFrame *frame = call->parentFrame();
+ int row = frame->calls.indexOf(call);
+ QModelIndex index = createIndex(row, 0, call);
+ emit dataChanged(index, index);
+}
+
#include "apitracemodel.moc"