X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapitracemodel.cpp;h=800b5c7457d03781e1f9d25726335922c0dbf9fd;hb=ebf971eec6c3a5f98885cc418e04690ba213b645;hp=ca9386c993f9522300606fb03a06622eb694de59;hpb=63efea8b0fce2d01afa3f96540487841d6a488f0;p=apitrace diff --git a/gui/apitracemodel.cpp b/gui/apitracemodel.cpp index ca9386c..800b5c7 100644 --- a/gui/apitracemodel.cpp +++ b/gui/apitracemodel.cpp @@ -1,7 +1,7 @@ #include "apitracemodel.h" #include "apitracecall.h" -#include "loaderthread.h" +#include "traceloader.h" #include "trace_parser.hpp" #include @@ -42,7 +42,7 @@ QVariant ApiTraceModel::data(const QModelIndex &index, int role) const const QString stateText = tr("State info available."); if (itm->type() == ApiTraceEvent::Call) { ApiTraceCall *call = static_cast(itm); - if (call->state().isEmpty()) + if (!call->hasState()) return QString::fromLatin1("%1) %2") .arg(call->index()) .arg(call->name()); @@ -53,12 +53,20 @@ QVariant ApiTraceModel::data(const QModelIndex &index, int role) const .arg(stateText); } else { ApiTraceFrame *frame = static_cast(itm); - QString text = frame->staticText().text(); - if (frame->state().isEmpty()) - return QString::fromLatin1("%1").arg(text); + QString text = QObject::tr("%1) Frame ") + .arg(frame->number); + int binaryDataSize = frame->binaryDataSize() / 1024; + if (!frame->hasState()) + return QObject::tr( + "%1 (binary data size = %2kB)") + .arg(text) + .arg(binaryDataSize); else - return QString::fromLatin1("%1
%2") + return QObject::tr( + "%1 (binary data size = %2kB)" + "
%3") .arg(text) + .arg(binaryDataSize) .arg(stateText); } } @@ -98,7 +106,7 @@ QVariant ApiTraceModel::headerData(int section, Qt::Orientation orientation, QModelIndex ApiTraceModel::index(int row, int column, const QModelIndex &parent) const { - if (parent.isValid() && parent.column() != 0) + if ((parent.isValid() && parent.column() != 0) || column != 0) return QModelIndex(); ApiTraceEvent *event = item(parent); @@ -108,7 +116,7 @@ QModelIndex ApiTraceModel::index(int row, int column, return QModelIndex(); } ApiTraceFrame *frame = static_cast(event); - ApiTraceCall *call = frame->calls.value(row); + ApiTraceCall *call = frame->call(row); if (call) return createIndex(row, column, call); else @@ -129,7 +137,7 @@ bool ApiTraceModel::hasChildren(const QModelIndex &parent) const ApiTraceEvent *event = item(parent); if (event && event->type() == ApiTraceEvent::Frame) { ApiTraceFrame *frame = static_cast(event); - return !frame->calls.isEmpty(); + return !frame->isEmpty(); } else return false; } else { @@ -163,7 +171,7 @@ int ApiTraceModel::rowCount(const QModelIndex &parent) const ApiTraceFrame *frame = static_cast(event); if (frame) - return frame->calls.count(); + return frame->numChildren(); return 0; } @@ -204,8 +212,10 @@ void ApiTraceModel::setApiTrace(ApiTrace *trace) this, SLOT(invalidateFrames())); connect(m_trace, SIGNAL(framesInvalidated()), this, SLOT(invalidateFrames())); - connect(m_trace, SIGNAL(framesAdded(int, int)), - this, SLOT(appendFrames(int, int))); + connect(m_trace, SIGNAL(beginAddingFrames(int, int)), + this, SLOT(beginAddingFrames(int, int))); + connect(m_trace, SIGNAL(endAddingFrames()), + this, SLOT(endAddingFrames())); connect(m_trace, SIGNAL(changed(ApiTraceCall*)), this, SLOT(callChanged(ApiTraceCall*))); } @@ -221,11 +231,10 @@ void ApiTraceModel::invalidateFrames() endResetModel(); } -void ApiTraceModel::appendFrames(int oldCount, int numAdded) +void ApiTraceModel::beginAddingFrames(int oldCount, int numAdded) { beginInsertRows(QModelIndex(), oldCount, oldCount + numAdded - 1); - endInsertRows(); } ApiTraceEvent * ApiTraceModel::item(const QModelIndex &index) const @@ -243,7 +252,7 @@ void ApiTraceModel::stateSetOnEvent(ApiTraceEvent *event) if (event->type() == ApiTraceEvent::Call) { ApiTraceCall *call = static_cast(event); ApiTraceFrame *frame = call->parentFrame(); - int row = frame->calls.indexOf(call); + int row = frame->callIndex(call); QModelIndex index = createIndex(row, 0, call); emit dataChanged(index, index); } else if (event->type() == ApiTraceEvent::Frame) { @@ -270,7 +279,7 @@ QModelIndex ApiTraceModel::indexForCall(ApiTraceCall *call) const ApiTraceFrame *frame = call->parentFrame(); Q_ASSERT(frame); - int row = frame->calls.indexOf(call); + int row = frame->callIndex(call); if (row < 0) { qDebug() << "Couldn't find call num "<index()<<" inside parent!"; return QModelIndex(); @@ -280,11 +289,28 @@ QModelIndex ApiTraceModel::indexForCall(ApiTraceCall *call) const void ApiTraceModel::callChanged(ApiTraceCall *call) { - qDebug()<<"Call changed = "<edited(); ApiTrace *trace = call->parentFrame()->parentTrace(); + +#if 0 + qDebug()<<"Call changed = "<edited(); qDebug()<<"\ttrace edited = "<edited(); qDebug()<<"\ttrace file = "<fileName(); qDebug()<<"\ttrace needs saving = "<needsSaving(); +#endif + + Q_ASSERT(trace); + if (trace->needsSaving()) + trace->save(); + + ApiTraceFrame *frame = call->parentFrame(); + int row = frame->callIndex(call); + QModelIndex index = createIndex(row, 0, call); + emit dataChanged(index, index); +} + +void ApiTraceModel::endAddingFrames() +{ + endInsertRows(); } #include "apitracemodel.moc"