#include <QAbstractItemModel>
#include <QModelIndex>
+#include <QSet>
#include <QVariant>
+class ApiTrace;
class ApiTraceCall;
-class LoaderThread;
-namespace Trace {
- class Call;
-}
+class ApiTraceEvent;
+class ApiTraceFrame;
class ApiTraceModel : public QAbstractItemModel
{
Q_OBJECT
-
+public:
+ enum Roles {
+ EventRole = Qt::UserRole + 1
+ };
public:
ApiTraceModel(QObject *parent = 0);
~ApiTraceModel();
+ void setApiTrace(ApiTrace *trace);
+ const ApiTrace *apiTrace() const;
+ void stateSetOnEvent(ApiTraceEvent *event);
+
+ QModelIndex indexForCall(ApiTraceCall *call) const;
+
+public:
+ /* QAbstractItemModel { */
QVariant data(const QModelIndex &index, int role) const;
Qt::ItemFlags flags(const QModelIndex &index) const;
QVariant headerData(int section, Qt::Orientation orientation,
const QModelIndex &parent = QModelIndex());
bool removeRows(int position, int rows,
const QModelIndex &parent = QModelIndex());
+ virtual bool canFetchMore(const QModelIndex & parent) const;
+ virtual void fetchMore(const QModelIndex &parent);
+ /* } QAbstractItemModel; */
+
+private slots:
+ void invalidateFrames();
+ void beginAddingFrames(int oldCount, int numAdded);
+ void endAddingFrames();
+ void changed(ApiTraceEvent *event);
+ void callChanged(ApiTraceCall *call);
+ void frameChanged(ApiTraceFrame *frame);
+ void beginLoadingFrame(ApiTraceFrame *frame, int numAdded);
+ void endLoadingFrame(ApiTraceFrame *frame);
-public slots:
- void loadTraceFile(const QString &fileName);
- void appendCalls(const QList<Trace::Call*> traceCalls);
+private:
+ ApiTraceEvent *item(const QModelIndex &index) const;
private:
- QList<ApiTraceCall*> m_calls;
- LoaderThread *m_loader;
+ ApiTrace *m_trace;
+ QSet<ApiTraceFrame*> m_loadingFrames;
};
#endif