X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=gui%2Fapitracemodel.cpp;h=e60b176f02311387ab62d35fa25544833293e99c;hb=0091432a9a7d98a125b5cbe0b3be7342949a0969;hp=4d28cd3bb9f941d2ee4ee29d7bc36f2ae11d9701;hpb=0ddd2502eeb411d1dae9004cf1636aa3a1b8e755;p=apitrace diff --git a/gui/apitracemodel.cpp b/gui/apitracemodel.cpp index 4d28cd3..e60b176 100644 --- a/gui/apitracemodel.cpp +++ b/gui/apitracemodel.cpp @@ -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(); + QString text = QObject::tr("%1) Frame ") + .arg(frame->number); + int binaryDataSize = frame->binaryDataSize() / 1024; if (frame->state().isEmpty()) - return QString::fromLatin1("%1").arg(text); + 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,8 +289,28 @@ QModelIndex ApiTraceModel::indexForCall(ApiTraceCall *call) const void ApiTraceModel::callChanged(ApiTraceCall *call) { + ApiTrace *trace = call->parentFrame()->parentTrace(); + +#if 0 qDebug()<<"Call changed = "<edited(); - qDebug()<<"\ttrace edited = "<parentFrame()->parentTrace()->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"