Timeline: Add stash() and restore() methods to notes model

Those are needed when manipulating the model in a way that may change
the indices, like restricting to a range or filtering by categories.

Change-Id: I9f218d269cf23104c306960ef77c0fc41591daa1
Reviewed-by: Tobias Hunger <tobias.hunger@qt.io>
This commit is contained in:
Ulf Hermann
2018-03-27 16:45:42 +02:00
parent 1ccd058bdf
commit e0ba6f91ce
7 changed files with 20 additions and 10 deletions

View File

@@ -179,6 +179,14 @@ void TimelineNotesModel::resetModified()
d->modified = false;
}
void TimelineNotesModel::stash()
{
}
void TimelineNotesModel::restore()
{
}
void TimelineNotesModel::removeTimelineModel(const TimelineModel *timelineModel)
{
Q_D(TimelineNotesModel);

View File

@@ -61,7 +61,9 @@ public:
bool isModified() const;
void resetModified();
void clear();
virtual void stash();
virtual void restore();
virtual void clear();
protected:
const TimelineModel *timelineModelByModelId(int modelId) const;

View File

@@ -536,7 +536,7 @@ void QmlProfilerModelManager::save(const QString &filename)
return;
}
d->notesModel->saveData();
d->notesModel->stash();
QmlProfilerFileWriter *writer = new QmlProfilerFileWriter(this);
writer->setTraceTime(traceTime()->startTime(), traceTime()->endTime(),
@@ -713,7 +713,7 @@ void QmlProfilerModelManager::clear()
void QmlProfilerModelManager::restrictToRange(qint64 startTime, qint64 endTime)
{
d->notesModel->saveData();
d->notesModel->stash();
const QVector<QmlNote> notes = d->notesModel->notes();
d->notesModel->clear();

View File

@@ -83,7 +83,7 @@ int QmlProfilerNotesModel::addQmlNote(int typeId, int collapsedRow, qint64 start
}
void QmlProfilerNotesModel::loadData()
void QmlProfilerNotesModel::restore()
{
{
QSignalBlocker blocker(this);
@@ -97,7 +97,7 @@ void QmlProfilerNotesModel::loadData()
emit changed(-1, -1, -1);
}
void QmlProfilerNotesModel::saveData()
void QmlProfilerNotesModel::stash()
{
// Keep notes that are outside the given range, overwrite the ones inside the range.
m_notes = Utils::filtered(m_notes, [](const QmlNote &note) {

View File

@@ -37,12 +37,12 @@ class QMLPROFILER_EXPORT QmlProfilerNotesModel : public Timeline::TimelineNotesM
public:
QmlProfilerNotesModel(QObject *parent);
void loadData();
void saveData();
void restore() override;
void stash() override;
const QVector<QmlNote> &notes() const;
void setNotes(const QVector<QmlNote> &notes);
void clear();
void clear() override;
protected:
QVector<QmlNote> m_notes;

View File

@@ -108,7 +108,7 @@ QmlProfilerTraceView::QmlProfilerTraceView(QWidget *parent, QmlProfilerViewManag
case QmlProfilerModelManager::Empty:
d->m_modelProxy->setModels(d->m_suspendedModels);
d->m_suspendedModels.clear();
d->m_modelManager->notesModel()->loadData();
d->m_modelManager->notesModel()->restore();
break;
case QmlProfilerModelManager::ClearingData:
d->m_zoomControl->clear();

View File

@@ -87,7 +87,7 @@ int FlameGraphModelTest::generateData(QmlProfilerModelManager *manager)
manager->finalize();
manager->notesModel()->setNotes(QVector<QmlNote>({QmlNote(0, 2, 1, 20, "dings")}));
manager->notesModel()->loadData();
manager->notesModel()->restore();
return rangeModelId;
}