Esempio n. 1
0
QModelIndex ApiTraceModel::parent(const QModelIndex &index) const
{
    if (!index.isValid())
        return QModelIndex();

    ApiTraceEvent *event = item(index);

    if (event->type() == ApiTraceEvent::Call) {
        ApiTraceCall *call = static_cast<ApiTraceCall*>(event);

        if (call->parentCall()) {
            ApiTraceCall *parentCall = call->parentCall();
            ApiTraceEvent *topEvent = parentCall->parentEvent();
            return createIndex(topEvent->callIndex(parentCall), 0, parentCall);
        } else {
            Q_ASSERT(call->parentFrame());
            return createIndex(call->parentFrame()->number,
                               0, call->parentFrame());
        }
    }
    return QModelIndex();
}