X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapitracemodel.cpp;h=a510c437118153b2e2da50d5ef683f2160ad5823;hb=3176ebeffe825a5f998b13755c09cfa312b0e8d3;hp=800b5c7457d03781e1f9d25726335922c0dbf9fd;hpb=ac92a2115ab3c759add836e115f108c945e0195b;p=apitrace diff --git a/gui/apitracemodel.cpp b/gui/apitracemodel.cpp index 800b5c7..a510c43 100644 --- a/gui/apitracemodel.cpp +++ b/gui/apitracemodel.cpp @@ -218,6 +218,8 @@ void ApiTraceModel::setApiTrace(ApiTrace *trace) this, SLOT(endAddingFrames())); connect(m_trace, SIGNAL(changed(ApiTraceCall*)), this, SLOT(callChanged(ApiTraceCall*))); + connect(m_trace, SIGNAL(frameLoaded(ApiTraceFrame*)), + this, SLOT(frameChanged(ApiTraceFrame*))); } const ApiTrace * ApiTraceModel::apiTrace() const @@ -313,4 +315,53 @@ void ApiTraceModel::endAddingFrames() endInsertRows(); } +bool ApiTraceModel::canFetchMore(const QModelIndex &parent) const +{ + if (parent.isValid()) { + ApiTraceEvent *event = item(parent); + if (event && event->type() == ApiTraceEvent::Frame) { + ApiTraceFrame *frame = static_cast(event); + return !frame->loaded() && !m_loadingFrames.contains(frame); + } else + return false; + } else { + return false; + } +} + +void ApiTraceModel::fetchMore(const QModelIndex &parent) +{ + if (parent.isValid()) { + ApiTraceEvent *event = item(parent); + if (event && event->type() == ApiTraceEvent::Frame) { + ApiTraceFrame *frame = static_cast(event); + QModelIndex index = createIndex(frame->number, 0, frame); + + Q_ASSERT(!frame->loaded()); + m_loadingFrames.insert(frame); + beginInsertRows(index, 0, + frame->numChildrenToLoad() - 1); + + m_trace->loadFrame(frame); + } + } +} + +void ApiTraceModel::frameChanged(ApiTraceFrame *frame) +{ + QModelIndex index = createIndex(frame->number, 0, frame); +#if 0 + qDebug()<<"Frame loaded = "<loaded(); + qDebug()<<"\tframe idx = "<number; + qDebug()<<"\tis empty = "<isEmpty(); + qDebug()<<"\tnum children = "<numChildren(); + qDebug()<<"\tindex is "<